[npm 5 a été publié aujourd'hui] (http://blog.npmjs.org/post/161081169345/v500) et l'une des nouvelles fonctionnalités comprend des installations déterministes avec la création d'un fichier package-lock.json
.
Ce fichier est-il censé être conservé dans le contrôle des sources ?
Je suppose qu'il est similaire à yarn.lock
et composer.lock
, qui sont tous deux censés être conservés dans le contrôle du code source.
Oui, package-lock.json
est destiné à être enregistré dans le contrôle de source. Si vous utilisez npm 5, vous verrez peut-être ceci sur la ligne de commande : created a lockfile as package-lock.json. You should commit this file.
Selon npm help package-lock.json
:
package-lock.json
est automatiquement généré pour toutes les opérations où npm modifie soit l'arbrenode_modules
, soitpackage.json
. Il décrit l'arbre l'arbre exact qui a été généré, de sorte que les installations ultérieures puissent générer des arbres identiques, indépendamment des mises à jour intermédiaires des dépendances.
Ce fichier est destiné à être livré dans les dépôts de sources** et sert à plusieurs fins divers objectifs :
- Décrire une représentation unique d'un arbre de dépendances de sorte que les coéquipiers, les déploiements et l'intégration continue soient garantis d'installer exactement les mêmes dépendances.
- Fournir une facilité pour les utilisateurs de "time-travel" ; aux états précédents de
node_modules
sans avoir à commiter le répertoire lui-même.
- Faciliter une plus grande visibilité des modifications de l'arborescence par des diffs de contrôle de source lisibles.
- Et optimiser le processus d'installation en permettant à npm de sauter les résolutions de métadonnées répétées pour les paquets précédemment installés.
Un détail important concernant package-lock.json
est qu'il ne peut pas être publié, et qu'il sera ignoré s'il est trouvé dans n'importe quel endroit.
sera ignoré s'il est trouvé ailleurs que dans le paquet de niveau supérieur. Il partage
format avec npm-shrinkwrap.json(5), qui est essentiellement le même fichier, mais qui
permet la publication. Ceci n'est pas recommandé à moins de déployer un outil CLI ou d'utiliser
ou si vous utilisez le processus de publication pour produire des paquets de production.
Si
package-lock.json
etnpm-shrinkwrap.json
sont tous deux présents à la racine d'un paquet un paquet,package-lock.json
sera complètement ignoré.
Oui, vous pouvez livrer ce fichier. Extrait de la [docs officielle de npm] (https://docs.npmjs.com/files/package-lock.json) :
package-lock.json
est automatiquement généré pour toute opération oùnpm
modifie soit l'arbrenode_modules
, soitpackage.json
. Il décrit l'arbre exact qui a été généré, de sorte que les installations ultérieures sont en mesure de générer des arbres identiques, indépendamment des mises à jour intermédiaires des dépendances.Ce fichier est destiné à être committé dans les dépôts de sources .