Vous n'êtes pas connecté - Connexion ou Créer un compte

Classée dans Questions > Questions / Réponses

NPM — Introduction au gestionnaire de paquets de Node.js

Administrateur
Une annonce aurait pu être ici :'(

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...

Il n'est plus possible de répondre à cette question car elle marquée comme résolue.