Différence entre npm i et npm ci
NodeJSGrâce à la très grande communauté open-source autour de Node, il nous est possible d'accéder à de nombreuses fonctionnalités déjà codées pour nous et les installer très facilement en tant que dépendances à nos projets.
npm est le gestionnaire de paquets officiel de Node qui va nous permettre de télécharger, installer, désinstaller ou mettre à jour nos paquets au sein d'un projet grâce à son CLI.
npm ci
s'avère très utile dans un pipeline CI/CD, mais quelle différence y a-t-il avec la commande npm install
?
npm i
La commande
npm i
est le raccourci denpm install
La commande npm i
installe toutes les dependencies
et/ou devDependencies
se trouvant dans le fichier package.json
Syntaxe:
npm i
npm ci
CI signifie Continuous Integration (Intégration Continue)
Cette commande est similaire à npm i
mais est surtout destinée aux environnements automatisés tels que les plateformes de test, l'intégration continue et le déploiement. (Ou tout autre situation où l'on veut être certain d'avoir une installation propre de nos dépendances).
npm ci
installe toutes les versions exactes des dependencies
et/ou devDependencies
se trouvant dans le fichier package-lock.json
Syntaxe:
npm ci
Les differences entre npm i et npm ci
npm i | npm ci |
---|---|
Son exécution est plus lente | Son exécution est plus rapide |
Il faut un fichier package.json à minima | Il faut obligatoirement un fichier package-lock.json |
Il peut écrire dans package.json ou package-lock.json | Il n'écrira jamais dans package.json ou package-lock.json. Les installations sont essentiellement gelées |
Les dépendances individuelles peuvent être ajoutées | Les dépendances individuelles ne peuvent pas être ajoutées |
Si une dépendance ne se trouve pas dans package-lock.json, elle sera ajoutée | Si des dépendances ne concordent pas avec le fichier package.json, alors npm ci quittera avec une erreur au lieu de mettre à jour package-lock.json |
Si un dossier node_modules est déjà présent, il n'est pas supprimé | Si un dossier node_modules est déjà présent, il sera automatiquement supprimé avant que npm ci commence l'installation |
Il peut installer des paquets globalement | Il ne peut pas installer des paquets globalement |
Voir la documentation officielle :
Remonter