NPM — Introduction au gestionnaire de paquets de Node.js
NPM est le gestionnaire de paquets de Node.js. L'article qui suit traite majoritairement de l'environnement Linux, mais quelques précisions sont apportées pour Windows en fin d'article.
Installation de NPM et Node.js
L'installation se fait simplement avec la commande suivante :
curl -L https://npmjs.org/install.sh | sudo sh
Installation de n
github.com/tj/n — Github de n
n est un utilitaire permettant de passer facilement d'une version de Node.js à une autre. Pour l'installer, exécutez la commande suivante :
sudo npm install -g n
Installer la dernière version stable de Node.js :
sudo n stable
Installation de paquet (package)
Installation locale
La commande npm install
permet l'installation de packages issus du registry NPM.
Exemple :
npm install grunt-contrib-concat
Cela a pour effet de copier les fichiers du package grunt-contrib-concat
dans le répertoire ./node_modules
. Il s'agit là d'une installation locale, c'est-à-dire qu'on destine grunt-package-concat
à être utilisé au sein de scripts en le chargeant via l'instruction require("grunt-contrib-concat")
.
Il est possible d'ajouter automatiquement le package installé dans le fichier package.json
. Pour cela, il y a deux options, soit l'ajouter en tant que dépendance standard, soit en tant que dépendance liée au développement. On ajoutera simplement un paramètre adapté à chaque fois.
npm install <package> --save
ou :
npm install <package> -S
Pour une dépendance liée au développement :
npm install <package> --save-dev
ou :
npm install <package> -D
À noter, qu'on peut utiliser l'alias i
au lieu de install
pour avoir une commande encore plus courte :
npm i <package> -D
Installation globale
Lorsque vous désirez utiliser les packages en ligne de commande, comme c'est le cas pour grunt-cli
, par exemple, une installation globale est requise.
Exemple :
npm install grunt-cli -g
ou
npm install grunt-cli --global
Les deux syntaxes ont le même effet. Les fichiers issus du package sont alors installés dans {prefix}/lib/node_modules
. {prefix}
vaut, par défaut, /usr
ou /usr/local
. Pour déterminer sa valeur, il suffit de saisir la commande :
npm config get prefix
Se passer de sudo
L'inconvénient de l'installation globale réside dans la nécessité d'user de sudo pour disposer des droits administrateur. Pour éviter cela, il est possible de redéfinir ce prefix
pour un répertoire utilisateur.
Exemple :
mkdir -p ~/.node_modules_global/bin && npm config set prefix=$HOME/.node_modules_global
La dernière partie définit un nouvel emplacement pour les installations globales, en modifiant le fichier ~/.npmrc
.
Vous pourrez désormais vous passez des sudo en début de commande pour les installation NPM. Il ne sera donc plus nécessaire de faire des sudo npm install -g
: npm install -g
suffira.
Pour pouvoir ensuite disposer des binaires exécutables installés dans ~/.node_modules_global/bin
, ajoutez un export vers ce répertoire dans votre ~/.profile
, ~/.bash_profile
ou de votre ~/.bashrc
(selon votre préférence), puis relancez votre terminal.
export PATH="$HOME/.node_modules_global/bin:$PATH"
Changer de version de NPM
Si vous avez suivi la partie Se passer de sudo, vous pouvez saisir directement :
npm install npm@<version> -g
Le paramètre <version>
peut être un numéro de version ou latest
pour désigner la dernière version stable.
Vous pouvez vérifier à tout moment la version installée avec : npm -v
Cache
NPM utilise un répertoire dans lequel il place les packages téléchargés (package.json
et package.tgz
) pour chacune de leur version. Ce répertoire est ~/.npm
(%AppData%/npm-cache
sous Windows).
Il est possible de modifier ce répertoire avec la commande : npm config set cache
Nettoyer le cache
Il est possible de nettoyer le répertoire de cache à tout moment en utilisant la commande : npm cache clean
Cela a pour effet de supprimer le contenu du répertoire de cache. À noter qu'il est possible de spécifier en argument un sous-chemin à supprimer.
Bonnes pratiques
package.json
Avec NPM, Il est possible de créer une tâche qui sera exécutée après un npm install
. Pour cela, il suffit d'ajouter dans le fichier package.json
une propriété "postinstall"
dans la propriété "scripts"
:
"scripts": {
"postinstall": "bowser install"
}
Sur Windows
Utilisateurs de Windows, il faudra passer par l'installeur téléchargeable sur le site de Node.js. Cet installeur permet l'installation de Node.js, mais aussi de NPM en plus de configurer la variable d'environnement PATH
.
Pour mettre à jour les version de Node et NPM, il faudra télécharger un nouvel installeur et l'exécuter à nouveau. Cela remplacera les anciennes versions déjà installées.
Node.js — Téléchargement
How to Install Node.js® and NPM on Windows — Article en anglais
Avec Docker
Si vous utilisez Docker, vous pouvez également passer par celui-ci pour utiliser Node.js en NPM. Pour cela, créez une image basée sur l'image node
.
FROM node:latest RUN npm install grunt-cli -g # Autres commandes dont vous avez besoin...