Je travaille avec l'intégration continue et j'ai découvert la commande npm ci .
Je ne peux pas comprendre les avantages de l'utilisation de cette commande pour mon flux de travail.
Est-ce plus rapide? Cela rend-il le test plus difficile, d'accord, et après?
Depuis le npm docs :
En bref, les principales différences entre npm install et npm ci sont les suivantes:
- Le projet doit avoir un package-lock.json ou un npm-shrinkwrap.json existant.
- Si les dépendances du verrou de package ne correspondent pas à celles de package.json, npm ci se fermera avec une erreur au lieu de mettre à jour le verrou de package.
- npm ci ne peut installer que des projets entiers à la fois: des dépendances individuelles ne peuvent pas être ajoutées avec cette commande.
- Si un node_modules est déjà présent, il sera automatiquement supprimé avant que npm ci ne commence son installation.
- Il n'écrira jamais dans package.json ni dans aucun des verrous de paquet: les installations sont essentiellement gelées.
Essentiellement, npm install
lit _package.json
_ pour créer une liste de dépendances et utilise _package-lock.json
_ pour indiquer les versions de celles-ci. dépendances à installer. Si une dépendance n'est pas dans _package-lock.json
_, elle sera ajoutée par _npm install
_ .
npm ci
(nommé d'après C ontinuous I ntegration) installe les dépendances directement à partir de _package-lock.json
_ et utilise _package.json
_ uniquement pour valider l'absence de versions incompatibles. Si des dépendances manquent ou ont des versions incompatibles, une erreur sera générée .
Utilisez _npm install
_ pour ajouter de nouvelles dépendances et pour mettre à jour des dépendances sur un projet. Habituellement, vous l'utiliserez pendant le développement après avoir extrait les modifications qui mettent à jour la liste des dépendances, mais il peut être judicieux d'utiliser _npm ci
_ dans ce cas.
Utilisez _npm ci
_ si vous avez besoin d’une construction déterministe et répétable. Par exemple, lors d'une intégration continue, de travaux automatisés, etc. et lors de la première installation de dépendances, au lieu de _npm install
_.
npm install
npm-shrinkwrap.json
_ et _package-lock.json
_ (dans cet ordre).node_modules
_.package.json
_ ou _package-lock.json
_. npm i packagename
_), il peut écrire dans _package.json
_ pour ajouter ou mettre à jour la dépendance.npm i
_), il peut écrire à _package-lock.json
_ pour verrouiller la version de certaines dépendances si elles ne figurent pas déjà dans ce fichier.npm ci
package-lock.json
_ ou _npm-shrinkwrap.json
_.package.json
_.node_modules
_ et installe toutes les dépendances en même temps.package.json
_ ou _package-lock.json
_.While _npm ci
_ génère l’arborescence de dépendances complète à partir de _package-lock.json
_ ou _npm-shrinkwrap.json
_, _npm install
_ met à jour le contenu de _node_modules
_ . en utilisant l'algorithme suivant ( source ):
_load the existing node_modules tree from disk clone the tree fetch the package.json and assorted metadata and add it to the clone walk the clone and add any missing dependencies dependencies will be added as close to the top as is possible without breaking any other modules compare the original tree with the cloned tree and make a list of actions to take to convert one to the other execute all of the actions, deepest first kinds of actions are install, update, remove and move
_
npm ci
supprimera tout dossier node_modules existant et s'appuiera sur le fichier package.lock
pour installer la version spécifique de chaque paquet. Il est nettement plus rapide que l’installation de npm car certaines fonctionnalités sont ignorées. Son état propre est idéal pour les pipelines ci/cd et les dockers construits! Vous l'utilisez également pour tout installer en même temps et non pour des packages spécifiques.
La documentation que vous avez liée avait le résumé:
En bref, les principales différences entre npm install et npm ci sont les suivantes:
- Le projet doit avoir un package-lock.json ou npm-shrinkwrap.json existant.
- Si les dépendances dans le verrou du paquet ne correspondent pas à celles du paquet.json, npm ci se fermera avec une erreur au lieu de mettre à jour le verrou du paquet.
- npm ci ne peut installer que des projets entiers à la fois: des dépendances individuelles ne peuvent pas être ajoutées avec cette commande.
- Si un node_modules est déjà présent, il sera automatiquement supprimé avant que npm ci ne commence son installation.
- Il n'écrira jamais dans package.json ni dans aucun des verrous de paquet: les installations sont essentiellement gelées.