Je me posais la même question. Voici mes réflexions, j'espère que cela vous aidera :
El documentation npm package-lock.json dit ce qui suit :
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 puissent générer des arbres identiques, indépendamment des mises à jour intermédiaires des dépendances.
C'est une bonne chose car cela évite l'effet "fonctionne sur ma machine".
Sans ce fichier, si vous npm install --save A
, npm ajoutera "A": "^1.2.3"
à votre package.json
. Quand quelqu'un d'autre dirige npm install
sur votre projet, il est possible que la version 1.2.4
de A
a été publié. Puisqu'il s'agit de la dernière version disponible qui satisfait à la fourchette de semver spécifiée dans vos package.json
il installera cette version. Mais que se passe-t-il si un nouveau bug est introduit dans cette version ? Cette personne aura un problème que vous ne pouvez pas reproduire car vous avez la version précédente, sans aucun bug.
En fixant l'état de votre node_modules
répertoire, package-lock.json
évite ce problème car tout le monde aura les mêmes versions de tous les paquets.
Mais, que se passe-t-il si vous écrivez et publiez un module npm ? La documentation dit ce qui suit :
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é ailleurs que dans le paquet de niveau supérieur.
Ainsi, même si vous le validez, lorsque l'utilisateur installera votre module, il n'obtiendra pas l'adresse de l'utilisateur. package-lock.json
mais seulement le package.json
fichier. Ainsi, npm installera la dernière version qui satisfait les plages de semver de toutes vos dépendances. Cela signifie que vous voulez toujours tester votre module avec ces versions de vos dépendances, et non celle que vous avez installée lorsque vous avez commencé à écrire votre module. Donc, dans ce cas, package-lock.json
est clairement inutile. De plus, cela peut être ennuyeux.
2 votes
Duplicata possible de Dois-je livrer le fichier yarn.lock et à quoi sert-il ?