À propos de ce cours
Objectifs de la leçon
- Utiliser les commandes new, generate, start, build et info.
- Générer un module, un contrôleur, un service et une ressource CRUD.
- Prévisualiser une génération avec --dry-run.
- Faire le lien entre les commandes nest et les scripts npm.
Les commandes les plus utilisées au quotidien.
nest new : créer un projet
nest new api-stagiaires
nest new api-stagiaires --package-manager npm --strict
nest generate : générer du code
nest generate (raccourci nest g) crée les fichiers d'un élément, avec le bon squelette, et met à jour automatiquement le module concerné.
| Élément | Commande complète | Raccourci |
|---|---|---|
| Module | nest generate module stagiaires | nest g mo stagiaires |
| Contrôleur | nest generate controller stagiaires | nest g co stagiaires |
| Service | nest generate service stagiaires | nest g s stagiaires |
| Ressource CRUD complète | nest generate resource groupes | nest g res groupes |
| Guard / pipe / intercepteur | nest g guard auth, nest g pipe majuscules, nest g interceptor journal | gu, pi, itc |
| Middleware / filtre | nest g middleware logger, nest g filter http-exception | mi, f |
| Classe / interface | nest g class dto/create-groupe.dto | cl, itf |
Exemple : générer la fonctionnalité « stagiaires » dans le bon ordre.
nest g mo stagiaires
nest g co stagiaires
nest g s stagiaires
CREATE src/stagiaires/stagiaires.module.ts
UPDATE src/app.module.ts ← StagiairesModule ajouté aux imports
CREATE src/stagiaires/stagiaires.controller.spec.ts
CREATE src/stagiaires/stagiaires.controller.ts
UPDATE src/stagiaires/stagiaires.module.ts ← contrôleur déclaré
CREATE src/stagiaires/stagiaires.service.spec.ts
CREATE src/stagiaires/stagiaires.service.ts
UPDATE src/stagiaires/stagiaires.module.ts ← service déclaré
Les options de génération
--dry-run(-d) : affiche ce qui serait créé, sans rien écrire. Idéal pour vérifier avant de générer.--no-spec: ne crée pas le fichier de test.spec.ts.--flat: crée les fichiers sans sous-dossier.
nest g resource : un CRUD en une commande
nest g res groupes
La CLI pose deux questions : la couche de transport (REST API) et la génération des points d'entrée CRUD (Yes). Elle crée alors le module, le contrôleur avec les cinq routes (GET, GET :id, POST, PATCH :id, DELETE :id), le service, les DTO et l'entité : une base complète que nous compléterons dans les chapitres suivants.
nest start et les scripts npm
| Script npm | Commande exécutée | Usage |
|---|---|---|
npm run start | nest start | Compile et lance une fois |
npm run start:dev | nest start --watch | Développement : relance à chaque modification |
npm run start:debug | nest start --debug --watch | Développement avec débogueur (leçon 2.5) |
npm run build | nest build | Compile le TypeScript dans dist/ |
npm run start:prod | node dist/main | Lance la version compilée (production) |
npm run test / test:e2e / test:cov | Jest | Tests (chapitre 17) |
npm run lint / format | ESLint / Prettier | Qualité et mise en forme du code |
nest build et nest info
nest build transforme les fichiers .ts de src/ en JavaScript dans le dossier dist/. C'est ce dossier qui sera exécuté sur le serveur de production (chapitre 20). nest info affiche les versions du système, de Node.js et des paquets NestJS : à joindre à toute demande d'aide.
Astuce: nest --help et nest generate --help listent toutes les commandes et tous les éléments disponibles.
Activités
Activité 1 Prévisualiser puis générer
- Dans
api-stagiaires, lanceznest g mo formations --dry-run. Le dossiersrc/formationsexiste-t-il ? - Générez réellement le module, le contrôleur et le service
formations, sans fichiers de test. - Ouvrez
app.module.tsetformations.module.ts: qu'a ajouté la CLI ? - Faites un commit « Génération du module formations » et poussez sur GitHub.
Voir le corrigé
Avec --dry-run, rien n'est créé. Ensuite :
nest g mo formations
nest g co formations --no-spec
nest g s formations --no-spec
FormationsModule est ajouté aux imports de AppModule; FormationsController et FormationsService sont déclarés dans FormationsModule. Au redémarrage, le terminal affiche FormationsController {/formations}.
Activité 2 Une ressource CRUD complète
Générez la ressource groupes (REST API, CRUD : oui). Lancez l'application et relevez dans le terminal les routes créées. Ouvrez http://localhost:3000/groupes: que renvoie-t-elle ?
Voir le corrigé
Le terminal liste {/groupes, POST}, {/groupes, GET}, {/groupes/:id, GET}, {/groupes/:id, PATCH} et {/groupes/:id, DELETE}. La route GET /groupes renvoie le texte de démonstration « This action returns all groupes » écrit dans le service généré.
Activité 3 Compiler
Lancez npm run build puis npm run start:prod. Comparez le contenu de src/main.ts et de dist/main.js.
Voir le corrigé
dist/main.js est la version JavaScript compilée : les types et les imports TypeScript ont été transformés. start:prod exécute directement ce fichier avec Node.js, sans la CLI.
À retenir
- nest new crée un projet ; nest g génère module (mo), contrôleur (co), service (s), ressource (res)…
- La CLI met à jour automatiquement les modules concernés.
- --dry-run prévisualise, --no-spec supprime les tests, --flat évite le sous-dossier.
- start:dev pour développer, build puis start:prod pour la production.