Skip to content

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 :

bash
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 :

bash
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 section devDependencies du fichier package.json.
  • --no-save qui empêche l'enregistrement du paquet dans le fichier package.json.
  • --no-optional qui empêche l'installation des dépendances optionnelles.
  • --save-optional qui ajoute le paquet à la section optionalDependencies du fichier package.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 :

bash
npm update

Cela mettra à jour toutes les dépendances vers leur dernière version.

Vous pouvez également spécifier un seul package à mettre à jour :

bash
npm update <package-name>

Suppression des packages

Pour supprimer un package, vous pouvez exécuter :

bash
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 :

bash
npm install <package-name>@<version>

Vous pouvez également installer la dernière version d'un package en exécutant :

bash
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 :

bash
npm run <task-name>

Par exemple, si vous avez un fichier package.json avec le contenu suivant :

json
{
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  }
}

Il est très courant d'utiliser cette fonctionnalité pour exécuter Webpack :

json
{
  "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 :

bash
npm run watch
npm run dev
npm run prod