Scripts npm
Chaque projet du dépôt a son propre package.json et son propre node_modules : il n'y a pas d'espace de travail npm à la racine. Les commandes se lancent donc depuis le dossier du projet, après npm ci. Le tableau de cette page est généré à chaque construction de la documentation depuis les fichiers package.json : il est toujours à jour.
Commandes du quotidien
| Besoin | Projet | Commande |
|---|---|---|
| Lancer l'API en développement, avec rechargement | backend/ |
npm run dev |
| Lancer le worker seul en développement | backend/ |
npm run dev:worker |
| Appliquer les migrations sur la base locale | backend/ |
npm run prisma:deploy |
| Créer une migration après modification du schéma | backend/ |
npm run prisma:migrate |
| Charger les données de démonstration | backend/ |
npm run prisma:seed |
| Lancer le frontend web | frontend-web/ |
npm run dev |
| Lancer l'application mobile | mobile-app/ |
npm start |
| Servir le site de l'Office de Tourisme | frontend-office-tourisme/ |
npm run dev |
| Compiler et tester les contrats | smart-contract/ |
npm run build, puis npm test |
| Republier les ABI vers le backend après un changement de contrat | smart-contract/ |
npm run export:abi |
| Déployer sur Sepolia, dans l'ordre | smart-contract/ |
npm run vrf:sepolia, npm run deploy:sepolia, npm run automation:sepolia, puis npm run verify:sepolia |
| Construire et prévisualiser cette documentation | documentation-officielle/ |
npm run build, puis npm run serve |
Avant d'ouvrir une pull request, lancer dans chaque projet modifié les mêmes contrôles que la CI : npm run typecheck, npm run lint et les tests (voir Intégration continue et Tests et qualité).
Pièges connus
npm run builddu backend ne construit rien. Il lancetsc --noEmit, commetypecheck. Le build de production, qui écritdist/et copie les modèles d'emails, estnpm run compile.npm run prisma:resetefface la base locale. Il supprime la base et toutes ses données, puis réapplique les migrations. Relancer ensuitenpm run prisma:seedsi besoin. À ne jamais pointer vers une base partagée.npm run prisma:migrateest réservé au poste de développement. Il crée une migration et peut proposer de réinitialiser la base en cas de dérive. Hors développement, seulprisma:deploys'utilise.npm testdu backend n'utilise pas de vraie chaîne. Les tests sur la blockchain se lancent avecnpm run test:chain, nœud Hardhat démarré (docker compose up -d --wait blockchain).- L'application mobile n'a pas de script de test. Le dossier
mobile-app/__tests__/existe, mais ni Jest ni scripttestne sont déclarés dans sonpackage.json: ces tests ne s'exécutent pas, ni en local, ni en CI. npm run deploy:localdes contrats suppose un nœud déjà lancé sur127.0.0.1:8545(npm run nodedans un autre terminal, ou le conteneurblockchain, qui déploie déjà les contrats à son démarrage).npm run devde l'Office de Tourisme téléchargeserveà la première exécution (npx --yes serve@14.2.7), en version épinglée.npm run slitherdemande Docker.slither.shlance l'imageghcr.io/crytic/slither:0.11.6(modifiable parSLITHER_IMAGE), installe le compilateur 0.8.34 dans le conteneur et analyse les deux contrats avec--fail-medium.
Référence générée
Smart contracts
Depuis le dossier smart-contract/ :
| Commande | Ce qu'elle exécute |
|---|---|
npm run build |
hardhat build |
npm run typecheck |
hardhat build && tsc --noEmit |
npm run lint |
solhint --max-warnings 0 "contracts/*.sol" |
npm run slither |
sh scripts/slither.sh |
npm run test |
hardhat test |
npm run test:coverage |
hardhat test --coverage |
npm run coverage:check |
node scripts/check-coverage.mjs |
npm run test:gas |
hardhat test mocha --gas-stats |
npm run node |
hardhat node |
npm run deploy:local |
hardhat run scripts/deploy-local.ts --network localhost |
npm run vrf:sepolia |
hardhat run scripts/setup-vrf-sepolia.ts --network sepolia |
npm run deploy:sepolia |
hardhat run scripts/deploy-sepolia.ts --network sepolia |
npm run automation:sepolia |
hardhat run scripts/register-automation-sepolia.ts --network sepolia |
npm run verify:sepolia |
hardhat run scripts/verify-sepolia.ts --network sepolia |
npm run export:abi |
hardhat build && node scripts/export-abi.mjs |
Backend
Depuis le dossier backend/ :
| Commande | Ce qu'elle exécute |
|---|---|
npm run dev |
tsx watch src/server.ts |
npm run dev:worker |
tsx watch src/worker.ts |
npm run build |
tsc --noEmit |
npm run typecheck |
tsc --noEmit |
npm run lint |
eslint . |
npm run env:check |
node scripts/check-env-example.mjs |
npm run compile |
tsc -p tsconfig.build.json && node -e "require('fs').cpSync('src/templates', 'dist/src/templates', { recursive: true })" |
npm run start |
node dist/src/server.js |
npm run start:worker |
node dist/src/worker.js |
npm run test |
jest --runInBand |
npm run test:coverage |
jest --runInBand --coverage |
npm run test:chain |
jest --runInBand --config jest.chain.config.json |
npm run prisma:generate |
prisma generate |
npm run prisma:migrate |
prisma migrate dev |
npm run prisma:deploy |
prisma migrate deploy |
npm run prisma:status |
prisma migrate status |
npm run prisma:reset |
prisma migrate reset |
npm run prisma:seed |
tsx prisma/seed.ts |
Frontend web
Depuis le dossier frontend-web/ :
| Commande | Ce qu'elle exécute |
|---|---|
npm run dev |
next dev -p 3000 |
npm run build |
next build |
npm run start |
next start -p 3000 |
npm run lint |
eslint . |
npm run typecheck |
tsc --noEmit |
npm run test |
vitest run |
npm run test:watch |
vitest |
Application mobile
Depuis le dossier mobile-app/ :
| Commande | Ce qu'elle exécute |
|---|---|
npm run start |
expo start |
npm run android |
expo start --android |
npm run ios |
expo start --ios |
npm run web |
expo start --web |
npm run typecheck |
tsc --noEmit |
npm run lint |
eslint . |
Office de Tourisme
Depuis le dossier frontend-office-tourisme/ :
| Commande | Ce qu'elle exécute |
|---|---|
npm run dev |
npx --yes serve@14.2.7 . -l 4000 |
Documentation officielle
Depuis le dossier documentation-officielle/ :
| Commande | Ce qu'elle exécute |
|---|---|
npm run build |
node scripts/build.mjs |
npm run check |
node scripts/check.mjs |
npm run serve |
node scripts/serve.mjs |
npm run publish |
node scripts/publish.mjs |