Dois-je livrer le fichier package-lock.json créé par npm 5 ?

[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.

Solution

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'arbre node_modules, soit package.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&quot ; 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 et npm-shrinkwrap.json sont tous deux présents à la racine d'un paquet un paquet, package-lock.json sera complètement ignoré.

Commentaires (23)

Oui, il est destiné à être enregistré. Je veux suggérer qu'il obtienne son propre commit unique. Nous trouvons que cela ajoute beaucoup de bruit à nos diffs.

Commentaires (8)

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'arbre node_modules, soit package.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 .

Commentaires (2)