Mettre à jour correctement ses dépendances avec npm

npm est le gestionnaire de paquets officiel de node.js. C'est un outil qui s'utilise en ligne de commande. Il permet de gérer les dépendances et la mise à jour de celles-ci.

Pour installer un paquet il suffit de taper la commande suivante :

npm install <nom_du_paquet>

Si on veut que ce paquet soit une une dépendance de notre projet il faut ajouter l'option -S. Cela va ajouter le paquet dans le fichier package.json.

Pour désinstaller le paquet il suffit de taper la commande suivante :

npm uninstall <nom_du_paquet>

Il y a de nombreuses options et diverses commandes. L'option help est votre amie.

Pour en revenir au titre, lorsqu'on veut installer toutes les dépendances d'un projet, dans le README du projet ou dans la procédure d'installation on trouve souvent la commande suivante :

npm install

Cette commande va bien installer les dépendances en se basant sur celles présentes dans le fichier package.json en respectant les syntaxes des versions :

  • soient les versions exactes si on a précisé les 3 nombres de laversion x.y.z où x représente la version majeure, y la version mineure et z les versions avec seulement des corrections de bugs.  
  • soient les versions avec correction de bug si on a par exemple 1.2.x
  • soient les versions équivalentes si on a mis par exemple ~1.2.3
  • soient les versions compatibles si on a mis ^1.2.3
  • ...

Les syntaxes sont nombreuses pour couvrir les différents cas.

Lorsqu'on utilise la commande npm install, avec ou sans nom de paquet derrière cela créé ou met à jour un fichier package-lock.json qui contient les versions exactes de toutes les dépendances installées. Du coup si on veut que la fabrication des fichiers cibles de son projet soit reproductible de manière fiable il faut être sûr de toujours utiliser les mêmes versions que ce soit en développement, en tests, en validation et à fortiori sur la production. Il faudrait exploiter le contenu du fichier package-lock.json. La commande npm install ne se base pas sur ce fichier. Mais depuis npm version 5.7.0 il existe une autre commande de npm qui permet d'exploiter le fichier package-lock.json :

npm ci

De cette façon le build est reproductible et on a une chaîne de mise en production fiable. Je m'étonne de ne pas voir plus souvent cette commande au lieu de simplement npm install ou npm i.

Haut de page