Différence entre npm i et npm ci

NodeJS

Grâ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 de npm 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 inpm ci
Son exécution est plus lenteSon exécution est plus rapide
Il faut un fichier package.json à minimaIl faut obligatoirement un fichier package-lock.json
Il peut écrire dans package.json ou package-lock.jsonIl n'écrira jamais dans package.json ou package-lock.json. Les installations sont essentiellement gelées
Les dépendances individuelles peuvent être ajoutéesLes dépendances individuelles ne peuvent pas être ajoutées
Si une dépendance ne se trouve pas dans package-lock.json, elle sera ajoutéeSi 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 globalementIl ne peut pas installer des paquets globalement

Voir la documentation officielle :

Remonter

Je suis entrain de jouer avec NextJS pour la nouvelle version de mon site, certaines parties ne sont pas encore accessible ! Voir la v1