Dans l’écosystème Typescript et plus généralement Javascript, il existe une multitude d’outils et de bibliothèques. Ces outils et ces bibliothèques peuvent être utilisés pendant l’exécution de l’application, pour aider aux développements, pour exécuter des tests ou pour aider au déploiement. La multitude des fonctionnalités de ces outils implique des méthodes d’installation spécifiques, des configurations particulières et surtout des cas d’utilisation souvent très différents.
Le plus souvent une application générée à partir de code Typescript est exécutée sur un serveur Node.js et dans cet environnement, un outil est incontournable pour aider à utiliser des bibliothèques tierces. Cet outil est npm (pour Node Package Manager), il sert à gérer les dépendances d’une application Typescript en les organisant sous forme de packages. D’autres gestionnaires existent comme Bower ou yarn.
Le but de cet article est d’expliquer le fonctionnement de npm et d’en expliciter les commandes principales.
Répertoires de npm
Installation par défaut
Répertoires contenant les packages
Modifier le répertoire global des packages (facultatif)
Fichier package.json
Générer un fichier package.json
Paramétrer des “méta-datas” par défaut
Les commandes usuelles de npm
Afficher de l’aide
Installation d’un package
Installer les dépendances indiquées dans package.json
Installation d’une dépendance de développement
Pour omettre l’édition de package.json
Installation d’un package dans le répertoire global
Installer une version spécifique
Indication de version dans package.json
Utiliser un fichier npm-shrinkwrap.json
Lister les packages installés
Désintaller un package
Avoir des informations sur un package
Mise à jour d’un package
Afficher les packages à mettre à jour
Effectuer des mises à jour
Supprimer les packages du cache
Chercher des packages
Supprimer des packages non référencés
Utilisation de scripts
Exécution de scripts personnalisés
Dépendances entre les scripts
Ajouter des arguments en exécutant un script
Exécuter des scripts dans des packages
Exemple de configuration des scripts d’un fichier package.json
npm est installé en même temps que Node.js (pour davantage de détails, voir Installation de Node.js).
Répertoires de npm
Installation par défaut
Après installation, npm est utilisable sous forme d’une commande disponible avec un terminal. Dans le cadre de l’installation qu’on avait effectuée dans l’article Installation de Typescript sur Debian/Ubuntu, Node.js et npm avaient été installés dans le répertoire /usr/node.js
, ainsi si on écrit la commande suivante, on doit obtenir le répertoire d’installation de npm:
user@debian:~% whereis npm
npm: /usr/node.js/node-v8.10.0-linux-x64/bin/npm
Répertoires contenant les packages
Les packages gérés par npm peuvent être installés suivant 2 modes: local ou global:
- Local: le package installé localement est installé dans un répertoire qui se trouve dans le répertoire de l’application. Ce répertoire est nommé
node_modules
. Le package est accessible seulement dans le répertoire de l’application. Dans ce mode, chaque application peut utiliser une version spécifique d’un même package. - Global: le package est installé de façon globale dans un répertoire accessible dans le répertoire d’installation de Node.js. Dans notre cas, ce répertoire est:
/usr/node.js/node-v8.10.0-linux-x64/
. Si un package est installé dans ce répertoire, il est partagé par toutes les applications.
Il est possible de modifier le chemin de ce répertoire, ce qu’on fera dans le paragraphe suivant.
Modifier le répertoire global des packages (facultatif)
Le répertoire global par défaut est dans le répertoire d’installation de Node.js. Pour savoir comment est préfixé le répertoire global, il faut afficher le paramètre config
de npm en écrivant:
user@debian:~% npm config get prefix
/usr/node.js/node-v8.10.0-linux-x64
Ainsi, le répertoire global est <prefix>/lib/node_modules
. Dans notre cas, le chemin précis du répertoire global est:
/usr/node.js/node-v8.10.0-linux-x64/lib/node_modules
Le gros inconvénient d’utiliser ce répertoire est qu’il est nécessaire d’être l’utilisateur root
pour gérer les packages qui s’y trouvent. Une possibilité est de modifier le préfixe pour que le répertoire global se trouve dans le répertoire de l’utilisateur. Les droits administrateurs ne sont donc plus nécessaires et l’utilisateur peut mettre à jour plus facilement les packages installés de façon globale. Les packages ne sont plus installés à l’échelle de la machine mais à celle de l’utilisateur.
Pour afficher les éléments de configuration de l’utilisateur courant, il suffit de taper:
user@debian:~% npm config list
; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.10.0 linux x64"
; node bin location = /usr/node.js/node-v8.10.0-linux-x64/bin/node
; cwd = /home/user
; HOME = /home/user
; "npm config ls -l" to show all defaults.
Pour modifier la valeur du préfixe:
-
Il faut taper:
user@debian:~% mkdir .node_modules user@debian:~% npm config set prefix=$HOME/.node_modules
Si on affiche de nouveau le préfixe après la modification:
user@debian:~% npm config get prefix /home/user/.node_modules
Cette opération a créé un fichier de configuration nommé
.npmrc
dans le répertoire de l’utilisateur. Ce fichier contient désormais la valeur du préfixe:user@debian:~% cat .npmrc prefix=/home/user/.node_modules
- Maintenant si on réinstalle le package npm au niveau global, il sera installé dans le répertoire
/home/user/.node_module
. Pour installer le packagenpm
au niveau global, on exécute la commande suivante (cette étape se fait sans être l’utilisateurroot
):user@debian:~% npm install npm --global
En vérifiant, on voit bien que le répertoire global contient des éléments fraîchement installés et il contient aussi les modules installés de façon globale:
user@debian:~% ls .node_modules bin etc lib share user@debian:~% ls .node_modules/lib/node_modules npm
- On peut ensuite, modifier le chemin de Node.js dans la variable d’environnement
PATH
en éditant le fichier.bashrc
avec un éditeur de texte. Par exemple, avecvi
, on peut exécuter la commande suivante:user@debian:~% vi .bashrc
A la fin du fichier, on peut remplacer les lignes:
export NODEJS_HOME=/usr/node.js/node-v8.10.0-linux-x64 export PATH=$PATH:NODEJS_HOME/bin
Avec les lignes suivantes, contenant les nouveaux chemins:
export NODEJS_HOME=$HOME/.node_modules export PATH=$PATH:NODEJS_HOME/bin
On enregistre en tapant sur la touche [Echap] puis
:wq
et la touche [Entrée] pour valider. - Si on ouvre un nouveau terminal, on devrait avoir un nouveau chemin pour npm:
user@debian:~% whereis npm npm: /home/user/.node_modules/bin
- A partir de cette étape, en exécutant
npm
on peut avoir une erreur du type:/usr/bin/env: 'node': No such file or directory
Cette erreur se produit parce que node n’est plus présent dans le répertoire
.node_modules/bin
. Il faut donc rajouter un lien symbolique vers l’ancien répertoire en exécutant:user@debian:~% cd .node_modules/bin user@debian:~/.node_modules/bin% ln -s /usr/node.js/node-v8.10.0-linux-x64/bin/node
On réinstalle ensuite node dans le répertoire global en exécutant:
user@debian:~/.node_modules/bin% npm install --global node
- On peut en profiter pour réinstaller Typescript
user@debian:~% npm install --global typescript
- On peut vérifier l’installation en exécutant:
user@debian:~% npm version user@debian:~% node –version
Fichier package.json
Dans le cadre d’un projet, npm utilise un fichier au format JSON nommé package.json
qui se trouve à la racine du répertoire du projet. Ce fichier contient des informations comme:
- La description du projet: ce sont des méta-datas comme le nom, la version, la description, la licence et des mots clés associés au projet. Ces informations peuvent être éditées au besoin.
- Les packages nécessaires: il est possible d’installer des packages et d’indiquer la dépendance du projet vers ce package en le rajoutant dans le
package.json
. Ainsi le fichierpackage.json
peut contenir toutes les dépendances du projet vers des packages gérés par npm. On distingue 2 types de dépendances:- Les dépendances de développement: ces packages ne sont utilisés que pour le développement et ne le sont pas en production. Par exemple, il peut s’agir de packages pour compiler le code Typescript, pour exécuter des tests ou des utilitaires pour aider au développement. Ces packages ne doivent pas être déployés en production.
Ces dépendances sont indiquées dans le fichier
package.json
dans l’élémentdevDependencies
. - Les dépendances utilisées au runtime: ces packages sont utilisés à l’exécution de l’application. Ils doivent donc être déployés en même temps que l’application.
Ces dépendances sont indiquées dans le fichierpackage.json
dans l’élémentdependencies
.
- Les dépendances de développement: ces packages ne sont utilisés que pour le développement et ne le sont pas en production. Par exemple, il peut s’agir de packages pour compiler le code Typescript, pour exécuter des tests ou des utilitaires pour aider au développement. Ces packages ne doivent pas être déployés en production.
- Les applications ou scripts à exécuter: suivant certaines opérations exécutées par npm, il faut exécuter des scripts ou des applications. Ces scripts et ces applications peuvent être indiquées dans le fichier
package.json
.
Générer un fichier package.json
Il est possible de générer un fichier package.json
en exécutant:
user@debian:~/Documents/test_package% npm init
Un certain nombre de questions sont posées pour remplir les méta-datas associées au projet. Un exemple du fichier généré est:
{
"name": "test_package",
"version": "1.0.0",
"description": "Description du package test_package",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Pour ne pas répondre aux différentes questions et générer le fichier directement, on peut écrire:
user@debian:~/Documents/test_package% npm init --yes
ou
user@debian:~/Documents/test_package% npm init -y
Paramétrer des “méta-datas” par défaut
Il est possible de paramétrer les méta-datas appliqués au fichier package.json
. Pour paramétrer ces méta-datas, il faut exécuter une commande du type:
user@debian:~% npm config set init.author.name <Nom de l'auteur>
user@debian:~% npm config set init.author.email <Email de l'auteur>
user@debian:~% npm config set init.author.url <Url du projet>
user@debian:~% npm config set init.license <Type de license>
Il est possible de configurer d’autres éléments, on peut avoir une liste plus exhaustive en exécutant:
npm help 7 config
Les commandes usuelles de npm
On va lister dans cette partie les commandes les plus courantes.
Afficher de l’aide
On peut afficher un message d’aide en exécutant:
user@debian:~% npm help
ou
user@debian:~% npm -h
Pour afficher de l’aide concernant une commande précise:
user@debian:~% npm help <nom de la commande>
ou
user@debian:~% npm <nom de la commande> -h
Installation d’un package
Ces commandes permettent d’installer un package. On peut avoir des détails sur les packages en allant sur le site npmjs.com/.
Si on installe un package localement, il sera placé dans un répertoire appelé node_modules
dans le répertoire courant. L’installation d’un package localement se fait en exécutant:
user@debian:~% npm install <nom du package>
ou
user@debian:~% npm i <nom du package>
Cette commande installera le package et, le cas échéant, toutes ces dépendances.
Après installation, la dépendance sera ajoutée au fichier package.json
dans l’élément de configuration dependencies
(correspondant aux packages nécessaires à l’exécution).
Ainsi si on exécute la commande suivante:
user@debian:~% npm install protractor
Le fichier package.json
contiendra:
{
"name": "test_package",
...,
"dependencies": {
"protractor": "^5.3.2"
}
}
Il est possible d’installer plusieurs packages en une seule fois en les listant à la suite:
user@debian:~% npm install <nom package 1> <nom package 2> <nom package 3> <etc...>
Installer les dépendances indiquées dans package.json
Il suffit d’exécuter cette commande (on ne précise pas d’arguments) dans le répertoire du projet:
user@debian:~% npm install
ou
user@debian:~% npm i
Installation d’une dépendance de développement
Si on veut installer un package et indiquer la dépendance sous forme d’une dépendance de développement, il faut exécuter:
npm install <nom du package> --save-dev
Au lieu de rajouter la dépendance dans l’élément dependencies
du fichier package.json
, npm rajoutera la dépendance dans l’élément devDependencies
.
Pour omettre l’édition de package.json
Pour éviter d’écrire dans le fichier package.json
quand on installe un package, il faut ajouter l’argument:
user@debian:~% npm install <nom du package> --no-save
Installation d’un package dans le répertoire global
Le répertoire global permet de partager un même package parmi plusieurs projets. Pour avoir le préfixe utilisé, il faut exécuter:
user@debian:~% npm config get prefix
Le répertoire global contenant les packages est <prefixe>/lib/node_modules
.
Pour installer un package dans le répertoire global, il faut exécuter:
user@debian:~% npm install --global <nom du package>
ou
user@debian:~% npm i –g <nom du package>
Installer une version spécifique
Les instructions précédentes permettent d’installer la dernière version du package toutefois on peut installer une version spécifique:
user@debian:~% npm install <nom du package>@<version du package>
Par exemple:
user@debian:~% npm install protractor@5.3.0
Indication de version dans package.json
Par défaut la version est indiquée dans le fichier package.json
en utilisant le caractère ^
:
{
"name": "test_package",
...,
"dependencies": {
"protractor": "^5.3.2"
}
}
Ce caractère permet d’indiquer que npm mettra à jour le package en exécutant npm update
en ne considérant que les versions avec le même numéro majeur. Npm utilise le Semantic Versioning avec des numéros de version sous la forme MAJOR.MINOR.PATCH. Ainsi le même numéro majeur signifie dans notre exemple que npm tentera de mettre à jour le package en cherchant des versions de la forme 5.x.y.
Dans le cadre du Semantic Versioning, un changement de version majeure signifie qu’un breaking change a été introduit.
On peut modifier ce comportement en remplaçant le caractère ^
par ~
dans le fichier package.json
. Par exemple:
{
"name": "test_package",
...,
"dependencies": {
"protractor": "~5.3.2"
}
}
Le caractère ~
permet d’indiquer que npm bloque la version majeure et mineure. Ainsi, le même
Numéro majeur et mineur signifie dans notre exemple que npm tentera de mettre à jour en cherchant des versions de la forme 5.3.x.
Dans le cadre du Semantic Versioning, un changement de version mineure signifie qu’il n’y a pas de breaking changes et qu’une nouvelle fonctionnalité a été rajoutée.
On peut bloquer une version précise en omettant tout caractère devant la version:
{
"name": "test_package",
...,
"dependencies": {
"protractor": "5.3.2"
}
}
On peut indiquer à npm d’ajouter un caractère différent de celui par défaut à l’installation d’un nouveau package en exécutant:
user@debian:~% npm config set save-prefix="~"
On peut modifier le comportement par défaut pour bloquer la version d’un package à chaque installation. Il faut exécuter:
user@debian:~% npm config set save-exact true
Utiliser un fichier npm-shrinkwrap.json
Pour figer une version d’un package, on peut utiliser un fichier nommé npm-shrinkwrap.json
à ranger dans le répertoire du projet. Depuis la version 5.x.y, ce fichier a été remplacé par le fichier package-lock.json
. Le fichier package-lock.json
est généré à chaque édition de npm init
.
Utiliser npm-shrinkwrap.json
est toutefois obsolète.
Si on souhaite vraiment utiliser un fichier npm-shrinkwrap.json
, il suffit d’exécuter:
user@debian:~% npm shrinkwrap
npm notice package-lock.json has been renamed to npm-shrinkwrap.json. npm-shrinkwrap.json
will be used for future installations.
Lister les packages installés
Pour lister les packages installés au niveau local, il faut exécuter:
user@debian:~% npm list
ou
user@debian:~% npm ls
Les packages seront listés avec leurs dépendances.
Pour lister les packages sans leurs dépendances:
user@debian:~% npm list --depth=0
Enfin pour lister les packages installés de façon globale:
user@debian:~% npm list --global
ou
user@debian:~% npm list –g
On peut afficher d’autres informations en listant les packages:
user@debian:~% npm ll
ou
user@debian:~% npm la
Désintaller un package
Pour désinstaller un package installé localement, il faut exécuter:
user@debian:~% npm uninstall <nom du package>
ou
user@debian:~% npm un <nom du package>
Les dépendances seront aussi désinstallées et l’entrée correspondante dans le fichier package.json
sera supprimée.
Pour désinstaller un package de façon globale, il faut exécuter:
user@debian:~% npm uninstall --global <nom du package>
ou
user@debian:~% npm uninstall -g <nom du package>
Avoir des informations sur un package
On peut avoir des informations sur un package en exécutant:
user@debian:~% npm view <nom du package>
Pour avoir des informations de version:
user@debian:~% npm view <nom du package> versions
Pour voir la page d’accueil du package:
user@debian:~% npm home <nom du package>
Pour avoir le repository Git:
user@debian:~% npm repo <nom du package>
Pour avoir de la documentation:
user@debian:~% npm docs <nom du package>
Pour voir les bugs:
user@debian:~% npm bugs <nom du package>
Mise à jour d’un package
Afficher les packages à mettre à jour
Pour afficher les packages pour lesquels une nouvelle version existe, il faut exécuter:
user@debian:~% npm outdated
L’affichage se fera de cette façon:
Package Current Wanted Latest Location
protractor 5.3.0 5.3.2 5.3.2 test_package
Effectuer des mises à jour
Pour mettre à jour un package:
user@debian:~% npm update <nom du package>
ou
user@debian:~% npm up <nom du package>
Certains éléments peuvent empêcher la mise à jour d’un package comme l’utilisation d’un fichier package-lock.json
, npm-shrinkwrap.json
, l’absence de caractères ^
ou ~
dans la liste des dépendances dans le fichier package.json
. Ces éléments sont précisés plus haut.
Supprimer les packages du cache
A chaque installation d’un package, npm range les packages téléchargés dans le répertoire nommé .npm
dans le répertoire home
de l’utilisateur. Le répertoire cache est utilisé pour éviter de solliciter le réseau pour réinstaller des packages déjà téléchargés.
Ainsi, le cache se trouve dans le répertoire .npm
. Si on liste ce répertoire:
user@debian:~% ls .npm
anonymous-cli-metrics.json _cacache index-v5 _locks _logs
Pour supprimer le cache, il faut exécuter la commande:
user@debian:~% npm cache clean
Chercher des packages
Pour chercher des packages se trouvant parmi la liste des packages disponibles, on peut exécuter:
user@debian:~% npm search <nom partiel du package>
Supprimer des packages non référencés
Certains packages peuvent être installés mais non référencés dans le fichier package.json
. Pour supprimer ces packages, on peut exécuter:
user@debian:~% npm prune
Utilisation de scripts
Un des grands intérêts de npm est de pouvoir exécuter des scripts dans le cadre de certaines actions. Pour exécuter un script, il faut exécuter la commande:
user@debian:~% npm run <nom du script>
ou
user@debian:~% npm run-script <nom du script>
Pour voir la liste des scripts disponibles, on peut écrire:
user@debian:~% npm run
ou
user@debian:~% npm run-script
Certaines actions peuvent être exécutées directement sans forcément utiliser la syntaxe npm run <nom de la commande>
ou npm run-script <nom de la commande>
.
Par exemple:
npm install
: permet d’installer des packages.npm pack
: produit un fichier compressé des fichiers à déployer.npm publish
: publie un package.npm restart
: exécute les scriptsstop
etstart
dans cet ordre sauf si un script spécifique nommérestart
est précisé.npm start
: exécute le script nomméstart
généralement pour démarrer le serveur Node.js.npm stop
: exécute le script nomméstop
généralement pour stopper le serveur Node.js.npm test
: permet d’exécuter les tests.npm uninstall
: désinstalle un ou plusieurs packages.npm unpublish
: supprime un package qui a été publié.
Les autres scripts doivent être exécutés en utilisant la syntaxe npm run <nom de la commande>
ou npm run-script <nom de la commande>
.
Le code correspondant aux scripts peut être implémenté dans l’élément de configuration scripts
dans le fichier package.json
. Par exemple, on peut voir cet élément de configuration dans le fichier généré plus haut (grâce à npm init
):
{
"name": "test_package",
"version": "1.0.0",
"description": "Description du package test_package",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Dans cet exemple, seul le script test
est implémenté.
Pour certaines commandes, il n’est pas forcément nécessaire d’implémenter du code pour qu’un traitement soit effectué comme npm install
, npm pack
, npm publish
, npm uninstall
et npm unpublish
.
npm considère qu’un script qui renvoie 0
a réussi son exécution et à l’opposé, un script qui renvoie 1
a échoué.
Lors de l’exécution des scripts avec npm run
, le chemin du répertoire <prefix>/node_modules/.bin
(<prefix>
étant le chemin du répertoire global) est rajouté à la variable d’environnement $PATH
. Il n’est donc pas nécessaire d’indiquer le chemin complet de ce répertoire pour attendre les binaires qui s’y trouvent.
Par exemple, pour démarrer les tests avec protractor, il n’est pas nécessaire d’écrire le chemin <prefix>/node_modules/.bin/protractor protractor-config.js
, on peut écrire directement dans le fichier package.json
:
"scripts": {
"test": "protractor protractor-config.js"
}
Exécution de scripts personnalisés
En plus de tous les scripts décrits plus haut, on peut personnaliser le nom d’un script à exécuter en l’indiquant dans le fichier package.json
.
Par exemple, si on nomme un script myscript
:
"scripts": {
"myscript": "echo 1"
}
On peut appeler ce script directement en utilisant la même syntaxe:
npm run myscript
ou
npm run-script myscript
Dépendances entre les scripts
Pour la plupart des scripts, quand on exécute un script nommé <script>
, les scripts suivants seront exécutés s’ils sont implémentés:
- pre<script>: il sera exécuté avant le script <script>.
- post<script>: il sera exécuté après le script <script>.
Si un script dans la suite pre<script>
, <script>
et post<script>
échoue (renvoie 1), l’exécution s’interrompt.
Par exemple, pour la plupart des scripts la règle indiquée précédemment est valable:
pretest
⇒test
⇒posttest
prestart
⇒start
⇒poststart
prestop
⇒stop
⇒poststop
prerestart
⇒restart
⇒postrestart
preuninstall
⇒uninstall
⇒postuninstall
Pour d’autres commandes, le workflow est plus complexe:
pack
:prepublish
⇒prepare
⇒prepack
⇒pack
⇒postpack
publish
:prepublish
⇒prepare
⇒prepublishOnly
⇒publish
⇒postpublish
install
(sans arguments supplémentaires):prepublish
⇒prepare
⇒preinstall
⇒install
⇒postinstall
Ajouter des arguments en exécutant un script
On peut transmettre des arguments à un script directement à partir de la ligne de commande npm
. Par exemple, en exécutant:
npm run test -- --grep="pattern"
Les arguments --grep="pattern"
sont transmis au script test
qui sera exécuté.
Exécuter des scripts dans des packages
On peut exécuter des scripts présents dans des packages en exécutant la commande:
npm explore <nom du package> -- npm run <nom du script>
Exemple de configuration des scripts d’un fichier package.json
Dans le cadre d’un projet Typescript, voici un exemple d’implémentation de scripts dans le fichier package.json
:
"scripts": {
"info": "npm-scripts-info",
"build": "run-s clean && run-p build:*",
"build:main": "tsc -p tsconfig.json",
"build:module": "tsc -p tsconfig.module.json",
"fix": "run-s fix:*",
"fix:prettier": "prettier \"src/**/*.ts\" --write",
"fix:tslint": "tslint --fix --project .",
"test": "run-s build test:*",
"test:lint": "tslint --project . && prettier \"src/**/*.ts\" --list-different",
"test:unit": "nyc --silent ava",
"test:nsp": "nsp check",
"watch": "run-s clean build:main && run-p \"build:main -- -w\" \"test:unit -- --watch\"",
"cov": "run-s build test:unit cov:html && opn coverage/index.html",
"cov:html": "nyc report --reporter=html",
"cov:send": "nyc report --reporter=lcov > coverage.lcov && codecov",
"cov:check": "nyc report && nyc check-coverage --lines 100 --functions 100 --branches 100",
"doc": "run-s doc:html && opn build/docs/index.html",
"doc:html": "typedoc src/ --target ES6 --mode file --out build/docs",
"doc:json": "typedoc src/ --target ES6 --mode file --json build/docs/typedoc.json",
"doc:publish": "gh-pages -m \"[ci skip] Updates\" -d build/docs",
"version": "standard-version",
"reset": "git clean -dfx && git reset --hard && npm i",
"clean": "trash build test",
"all": "run-s reset test cov:check doc:html",
"prepare-release": "run-s all version doc:publish"
}
Pour résumer…
Voici un tableau récapitulatif des commandes les plus utiles:
Commande | Raccourci | |
---|---|---|
npm install |
||
npm install |
npm i |
Installe les packages indiqués dans le fichier package.json |
npm install <package> |
npm i <package> |
Installe la dernière version d’un package |
npm install <package>@<version> |
npm i <package>@<version> |
Installe une version particulière d’un package |
npm install <package>@">=2 <3.0" |
npm i <package>@">=2 <3.0" |
Installe un package en précisant des conditions sur la version |
npm install <package> --global |
npm i <package> -g |
Installe un package dans le répertoire global |
npm install <package> --save-dev |
npm i <package> --save-dev |
Installe un package et indique ce package dans la partie devDependencies du fichier package.json |
npm install <package> --no-save |
npm i <package> --no-save |
Installe un package sans le mentionner dans le fichier package.json |
npm install @<nom du domaine>/<package> |
npm i @<nom du domaine>/<package> |
Installe un package appartenant à un domaine particulier (i.e. scope). Par exemple: npm install @types/jquery |
npm install <utilisateur>/<repository> |
npm i <utilisateur>/<repository> |
Installe un package à partir de GitHub |
npm install <utilisateur>/<repository>#<branche> |
npm i <utilisateur>/<repository>#<branche> |
|
npm install github:<utilisateur>/<repository> |
npm i github:<utilisateur>/<repository> |
|
npm update |
||
npm update |
npm up |
Met à jour les packages listés dans la partie dependencies du fichier package.json |
npm update --dev |
npm up --dev |
Met à jour les packages listés dans la partie devDependencies du fichier package.json |
npm update --global |
npm up -g |
Met à jour les packages se trouvant dans le répertoire global |
npm update <package> |
npm up <package> |
Met à jour un package spécifique |
npm outdated |
Affiche les packages à mettre à jour | |
npm outdated <package> |
Affiche si un package spécifique peut être mis à jour | |
npm uninstall <package> |
npm un <package> |
Désinstalle un package |
npm uninstall <package> --global |
npm un <package> -g |
Désintalle un package du répertoire global |
npm list |
||
npm list |
npm ls |
Liste les packages et leurs dépendances |
npm list --global |
npm ls -g |
Liste les packages dans le répertoire global |
npm list --depth=0 |
npm ls --depth=0 |
Liste les packages sans afficher leurs dépendances |
npm ll |
Liste les packages en affichant plus de détails | |
npm la |
||
Autres commandes |
||
npm view <package> |
Affiche les détails d’un package | |
npm view <package> versions |
Affiche les versions disponibles d’un package | |
npm search <nom partiel d'un package> |
Affiche les packages disponibles à partir d’un nom partiel |
- npm-scripts How npm handles the “scripts” field: https://docs.npmjs.com/misc/scripts
- 10 Tips and Tricks That Will Make You an npm Ninja: https://www.sitepoint.com/10-npm-tips-and-tricks/
- A Beginner’s Guide to npm — the Node Package Manager: https://www.sitepoint.com/beginners-guide-node-package-manager/
- 7 More npm Tricks to Knock Your Wombat Socks Off: https://nodesource.com/blog/seven-more-npm-tricks-to-knock-your-wombat-socks-off
- 11 Simple npm Tricks That Will Knock Your Wombat Socks Off: https://nodesource.com/blog/eleven-npm-tricks-that-will-knock-your-wombat-socks-off
- An Absolute Beginner’s Guide to Using npm: https://nodesource.com/blog/an-absolute-beginners-guide-to-using-npm/
- Semantic Versioning 2.0.0: https://semver.org/
- How npm install works on Stackoverflow.com: https://stackoverflow.com/questions/25897908/how-npm-install-works
- NPM Cheat Sheet: https://blog.ijasoneverett.com/2013/05/npm-cheat-sheet/
- Lyncstream npm Cheat Sheet: https://lyncstream.com/blog/npm-cheat-sheet/
- Node Package Manager by Jesse Warden http://www.jessewarden.com: http://jessewarden.com/archives/node-bower-grunt-cheat-sheet-v1-jessewarden.com.pdf
- Node Package Manager Cheat Sheet by GregFinzer: https://www.cheatography.com/gregfinzer/cheat-sheets/node-package-manager/
- Kapeli cheat sheet: https://kapeli.com/cheat_sheets/npm.docset/Contents/Resources/Documents/index
- npm cheatsheet from devhints.io: https://devhints.io/npm