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

Le gestionnaire de paquets npm (package.json, dépendances, scripts)

Cette leçon explique l'utilisation de npm, le gestionnaire de paquets de Node.js, indispensable pour travailler avec NestJS : création d'un projet avec npm init, structure du fichier package.json, ins...

0 chapitres 0 QCM Accès gratuit
Le gestionnaire de paquets npm (package.json, dépendances, scripts)

À propos de ce cours

Cette leçon explique l'utilisation de npm, le gestionnaire de paquets de Node.js, indispensable pour travailler avec NestJS : création d'un projet avec npm init, structure du fichier package.json, installation de dépendances et de dépendances de développement, numéros de version (^ et ~), rôle de package-lock.json et de node_modules, scripts npm et commande npx. Les activités font créer et configurer un projet complet.

Objectifs de la leçon

  • Créer un projet Node.js et comprendre le fichier package.json.
  • Installer, mettre à jour et supprimer des dépendances.
  • Lire un numéro de version sémantique.
  • Créer et lancer des scripts npm, utiliser npx.
npm, le gestionnaire de paquets

npm (Node Package Manager) est installé avec Node.js. Il donne accès au registre npm (npmjs.com), qui contient des centaines de milliers de paquets (bibliothèques) réutilisables. NestJS lui-même est distribué sous forme de paquets npm : @nestjs/core, @nestjs/common…

D'autres gestionnaires compatibles existent (pnpm, yarn) ; la CLI Nest vous proposera de choisir. Dans ce cours, nous utilisons npm.

Créer un projet : npm init
mkdir api-stagiaires
cd api-stagiaires
npm init -y        # crée package.json avec les valeurs par défaut
Le fichier package.json

C'est la carte d'identité du projet : nom, version, scripts et liste des dépendances.

Structure d'un fichier package.json

Les quatre parties essentielles d'un package.json.

Installer des dépendances
CommandeEffet
npm install express (ou npm i express)Installe un paquet et l'ajoute à dependencies
npm i -D jestAjoute à devDependencies (outils de développement)
npm i -g @nestjs/cliInstallation globale d'un outil en ligne de commande
npm installInstalle toutes les dépendances listées dans package.json
npm ciInstallation propre et exacte à partir de package-lock.json (serveurs, CI)
npm uninstall expressSupprime un paquet
npm outdated / npm updateVoir / appliquer les mises à jour compatibles
npm ls --depth=0Lister les paquets installés

dependencies: nécessaires au fonctionnement de l'application (par exemple @nestjs/core, typeorm). devDependencies: utiles uniquement pour développer (TypeScript, Jest, ESLint, la CLI Nest locale).

Les numéros de version

npm utilise le versionnage sémantique MAJEUR.MINEUR.CORRECTIF:

  • CORRECTIF (1.4.2) : corrections de bugs.
  • MINEUR (1.5. 0) : nouvelles fonctions, compatibles.
  • MAJEUR (2. 0.0) : changements incompatibles.
ÉcritureAccepte
"^5.1.0"5.1.0 et toutes les versions 5.x.x supérieures (pas 6.0.0)
"~5.1.0"5.1.x uniquement
"5.1.0"exactement 5.1.0
node_modules et package-lock.json
  • node_modules/ contient le code de tous les paquets installés (et de leurs propres dépendances). Ce dossier est très volumineux : on ne le copie jamais et on ne le met jamais sur GitHub. Un simple npm install le recrée.
  • package-lock.json enregistre la version exacte de chaque paquet installé. Il doit être versionné : toute l'équipe et le serveur installeront ainsi exactement les mêmes versions.
# .gitignore
node_modules/
dist/
.env
Les scripts npm

La section scripts donne des raccourcis pour les commandes du projet. On les lance avec npm run nom (npm start et npm test fonctionnent sans run).

"scripts": {
  "start": "node index.js",
  "dev": "node --watch index.js",
  "test": "jest"
}

Un projet NestJS est livré avec des scripts prêts à l'emploi : npm run start:dev, npm run build, npm run test, npm run lint… Vous les découvrirez à la leçon 2.4.

npx : exécuter sans installer

npx exécute la commande d'un paquet sans l'installer globalement. Par exemple, npx @nestjs/cli new mon-api crée un projet NestJS même si la CLI n'est pas installée.

Activités

Activité 1 Créer et configurer un projet

  1. Créez le dossier api-stagiaires et initialisez-le avec npm init -y.
  2. Installez express en dépendance et nodemon en dépendance de développement.
  3. Ouvrez package.json: dans quelles sections apparaissent-ils ?
  4. Ajoutez les scripts start (node index.js) et dev (nodemon index.js).
  5. Créez un index.js Express qui répond { "message": "API stagiaires" } sur / et lancez npm run dev.
Voir le corrigé
npm i express
npm i -D nodemon
const express = require('express');
const app = express();
app.get('/', (req, res) => res.json({ message: 'API stagiaires' }));
app.listen(3000, () => console.log('http://localhost:3000'));

express est dans dependencies, nodemon dans devDependencies.

Activité 2 Supprimer puis restaurer node_modules

Supprimez le dossier node_modules, lancez npm run dev et lisez l'erreur. Comment réparer ? Que montre cette expérience ?

Voir le corrigé

L'erreur indique que le module express est introuvable. Un npm install recrée le dossier à partir de package.json et package-lock.json. C'est pour cela que node_modules n'est jamais partagé ni versionné.

Activité 3 Lire des versions

Pour "^10.2.3", les versions suivantes sont-elles acceptées : 10.2.9 ; 10.5.0 ; 11.0.0 ? Et pour "~10.2.3"?

Voir le corrigé

Avec ^10.2.3: 10.2.9 oui, 10.5.0 oui, 11.0.0 non. Avec ~10.2.3: 10.2.9 oui, 10.5.0 non, 11.0.0 non.

À retenir

  • npm installe les paquets du registre npm et gère les dépendances du projet.
  • package.json décrit le projet ; package-lock.json fixe les versions exactes.
  • dependencies pour l'exécution, devDependencies pour le développement.
  • node_modules ne se versionne jamais : npm install le recrée.
  • npm run lance un script ; npx exécute un outil sans l'installer.