Introduction au gestionnaire de paquets npm
Introduction à npm
npm
est le gestionnaire de paquets standard pour Node.js.
En septembre 2022, plus de 2,1 millions de paquets étaient répertoriés dans le registre npm, ce qui en fait le plus grand référentiel de code pour une seule langue au monde, et vous pouvez être sûr qu'il existe un paquet pour (presque !) tout.
Il a commencé comme un moyen de télécharger et de gérer les dépendances des paquets Node.js, mais il est depuis devenu un outil également utilisé dans le JavaScript frontend.
TIP
Yarn
et pnpm
sont des alternatives à l'interface en ligne de commande npm. Vous pouvez également les consulter.
Paquets
Installation de toutes les dépendances
Vous pouvez installer toutes les dépendances listées dans votre fichier package.json
en exécutant :
npm install
Cela installera tout ce dont le projet a besoin, dans le dossier node_modules
, en le créant s'il n'existe pas déjà.
Installation d'un seul paquet
Vous pouvez installer un seul paquet en exécutant :
npm install <package-name>
De plus, depuis npm 5, cette commande ajoute <package-name>
aux dépendances du fichier package.json
. Avant la version 5, vous deviez ajouter l'indicateur --save
.
Vous verrez souvent plus d'indicateurs ajoutés à cette commande :
--save-dev
(ou-D
) qui ajoute le paquet à la sectiondevDependencies
du fichierpackage.json
.--no-save
qui empêche l'enregistrement du paquet dans le fichierpackage.json
.--no-optional
qui empêche l'installation des dépendances optionnelles.--save-optional
qui ajoute le paquet à la sectionoptionalDependencies
du fichierpackage.json
.
Des raccourcis des indicateurs peuvent également être utilisés :
-S
:--save
-D
:--save-dev
-O
:--save-optional
La différence entre devDependencies
et dependencies
est que le premier contient des outils de développement, comme une bibliothèque de test, tandis que le second est regroupé avec l'application en production.
Quant aux optionalDependencies
, la différence est qu'une défaillance de build de la dépendance n'entraînera pas l'échec de l'installation. Mais il est de la responsabilité de votre programme de gérer l'absence de la dépendance. Pour en savoir plus sur les dépendances optionnelles.
Mise à jour des packages
La mise à jour est également simplifiée grâce à la commande :
npm update
Cela mettra à jour toutes les dépendances vers leur dernière version.
Vous pouvez également spécifier un seul package à mettre à jour :
npm update <package-name>
Suppression des packages
Pour supprimer un package, vous pouvez exécuter :
npm uninstall <package-name>
Gestion des versions
En plus des téléchargements simples, npm
gère également la gestion des versions, vous permettant ainsi de spécifier une version spécifique d'un package, ou d'exiger une version supérieure ou inférieure à celle dont vous avez besoin.
Souvent, vous constaterez qu'une bibliothèque n'est compatible qu'avec une version majeure d'une autre bibliothèque.
Ou qu'un bug dans la dernière version d'une bibliothèque, non encore corrigé, pose problème.
La spécification d'une version explicite d'une bibliothèque permet également de garantir que tous les membres de l'équipe utilisent la même version exacte d'un package, jusqu'à la mise à jour du fichier package.json
.
Dans tous ces cas, la gestion des versions est très utile, et npm
suit la norme semantic versioning (semver).
Vous pouvez installer une version spécifique d'un package en exécutant :
npm install <package-name>@<version>
Vous pouvez également installer la dernière version d'un package en exécutant :
npm install <package-name>@latest
Exécution des tâches
Le fichier package.json prend en charge un format permettant de spécifier des tâches en ligne de commande qui peuvent être exécutées à l'aide de :
npm run <task-name>
Par exemple, si vous avez un fichier package.json avec le contenu suivant :
{
"scripts": {
"start": "node index.js",
"test": "jest"
}
}
Il est très courant d'utiliser cette fonctionnalité pour exécuter Webpack :
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
}
}
Ainsi, au lieu de taper ces longues commandes, faciles à oublier ou à mal taper, vous pouvez exécuter :
npm run watch
npm run dev
npm run prod