Personne n'écrit à la main sa propre validation de formulaire, son propre client HTTP et son propre outil de test. On installe des paquets, et il faut bien quelque chose pour les aller chercher, les ranger et retrouver la même version le mois suivant.
C'est le rôle de npm, installé en même temps que Node.js et présent sur presque tous les projets.
Définition
npm est le gestionnaire de paquets de l'écosystème JavaScript. Il lit le fichier package.json, télécharge les dépendances demandées depuis un registre public, les dépose dans le dossier node_modules et note les versions exactes obtenues dans package-lock.json.
// package.json, après « npm install zod » puis « npm install -D vitest »
{
"scripts": {
"test": "vitest run"
},
"dependencies": {
"zod": "^3.23.8"
},
"devDependencies": {
"vitest": "^2.0.5"
}
}La commande a modifié le fichier toute seule : c'est la façon normale d'ajouter une dépendance, plutôt que d'écrire la ligne à la main puis d'installer.
Les commandes du quotidien
| Commande | Ce qu'elle fait |
|---|---|
npm install | Installe tout ce que le projet déclare |
npm install paquet | Ajoute une dépendance et met à jour package.json |
npm install -D paquet | La range dans devDependencies |
npm ci | Réinstalle à l'identique depuis le fichier de verrouillage |
npm run build | Lance le script nommé build |
npm outdated | Liste les dépendances en retard |
Pendant un script npm, le dossier node_modules/.bin est ajouté au chemin des exécutables. C'est pourquoi "build": "vite build" fonctionne sans installer Vite sur toute la machine.
install ou ci, le choix qui compte
npm install réconcilie le projet avec ses dépendances : il accepte de monter de version dans les limites autorisées, et modifie le fichier de verrouillage au passage. C'est la commande de développement.
npm ci fait l'inverse : il supprime node_modules, réinstalle exactement ce que le verrou décrit et refuse de démarrer si le verrou et package.json se contredisent. C'est la commande d'intégration continue et de déploiement, celle qui rend une installation reproductible.
Questions fréquentes
Faut-il installer les paquets globalement ?
Le plus souvent non. Une installation locale garde chaque projet sur sa propre version, ce qui évite qu'une mise à jour globale casse un chantier ancien. Réservez l'option globale à un très petit nombre d'outils, et lancez le reste par script ou par npx.
Que faire quand une installation part en erreur ?
Le réflexe qui règle la majorité des cas consiste à supprimer node_modules, puis à relancer npm install. Si l'erreur persiste, lisez la ligne qui mentionne un paquet précis plutôt que la pile complète, et vérifiez la version de Node attendue par ce paquet.
npm, yarn ou pnpm ?
Les trois lisent le même package.json et le même registre, et un projet passe de l'un à l'autre sans réécrire son code. pnpm économise beaucoup d'espace disque en partageant les paquets entre projets, yarn a longtemps eu de l'avance sur la vitesse. npm reste le choix par défaut, puisqu'il arrive avec Node.