Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
NestJS

Présentation de la CLI Nest et ses commandes essentielles (new, generate, start, build)

Cette leçon présente les commandes essentielles de la CLI Nest : nest new pour créer un projet, nest generate pour produire modules, contrôleurs, services et ressources CRUD complètes (avec leurs racc...

0 chapitres 0 QCM Accès gratuit
Présentation de la CLI Nest et ses commandes essentielles (new, generate, start, build)

À propos de ce cours

Cette leçon présente les commandes essentielles de la CLI Nest : nest new pour créer un projet, nest generate pour produire modules, contrôleurs, services et ressources CRUD complètes (avec leurs raccourcis et les options --dry-run, --no-spec et --flat), nest start et ses modes watch et debug, nest build et nest info. Elle fait le lien avec les scripts npm du projet et propose de générer un premier module pas à pas.

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.

Aide-mémoire des commandes de la CLI Nest

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émentCommande complèteRaccourci
Modulenest generate module stagiairesnest g mo stagiaires
Contrôleurnest generate controller stagiairesnest g co stagiaires
Servicenest generate service stagiairesnest g s stagiaires
Ressource CRUD complètenest generate resource groupesnest g res groupes
Guard / pipe / intercepteurnest g guard auth, nest g pipe majuscules, nest g interceptor journalgu, pi, itc
Middleware / filtrenest g middleware logger, nest g filter http-exceptionmi, f
Classe / interfacenest g class dto/create-groupe.dtocl, 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 npmCommande exécutéeUsage
npm run startnest startCompile et lance une fois
npm run start:devnest start --watchDéveloppement : relance à chaque modification
npm run start:debugnest start --debug --watchDéveloppement avec débogueur (leçon 2.5)
npm run buildnest buildCompile le TypeScript dans dist/
npm run start:prodnode dist/mainLance la version compilée (production)
npm run test / test:e2e / test:covJestTests (chapitre 17)
npm run lint / formatESLint / PrettierQualité 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

  1. Dans api-stagiaires, lancez nest g mo formations --dry-run. Le dossier src/formations existe-t-il ?
  2. Générez réellement le module, le contrôleur et le service formations, sans fichiers de test.
  3. Ouvrez app.module.ts et formations.module.ts: qu'a ajouté la CLI ?
  4. 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.