L' yarn.lock
le fichier est assez similaire à d'autres gestionnaires de paquets de verrouillage des fichiers, en particulier la Rouille de la Cargaison du gestionnaire de paquet, qui a Cargo.lock
. L'idée de ces fichiers de verrouillage est de représenter un ensemble cohérent de paquets qui devrait toujours fonctionner.
npm
magasins de dépendance des plages dans l' package.json
le fichier, ce qui signifie que lorsque quelqu'un installe un paquet, ils pourraient obtenir un autre ensemble de dépendances pour vous, car vous pourriez être en cours d'exécution de paquets obsolètes (bien qu'ils continuent de satisfaire la dépendance de la plage que vous avez spécifié). Prenez, par exemple, quelqu'un qui a précisé que la dépendance "foo": "^1.0.0"
. Ils ont effectivement installé foo v1.0.1, parce que c'était la dernière quand ils ont couru npm install
, mais plus tard, quelqu'un installe votre paquet et obtient la dépendance foo v1.1.0. Cela pourrait casser quelque chose inattendue, qui peut être évitée si vous avez un yarn.lock
le fichier qui garantit la cohérence paquet de résolution.
Comme pour la comparaison avec d' npm shrinkwrap
, la documentation , l'explique très clairement:
Il est semblable à des mnp npm-emballé.json, cependant elle n'est pas figé et il crée des résultats reproductibles.
La documentation conseille également de commettre yarn.lock
de vos dépôts, si vous n'êtes pas déjà de faire cela, de sorte que vous pouvez récolter les avantages de la cohérente et reproductible paquet de résolution. Cette question explique plus loin pourquoi vous devriez le faire.
Les pertes de comportement de l' npm shrinkwrap
est attribuable à la non-déterministe des algorithmes utilisés par npm
lui-même; comme indiqué dans les commentaires d'une autre réponse, npm shrinkwrap
> npm install
> npm shrinkwrap
n'est pas garanti pour produire le même résultat que juste emballage par rétraction une fois, alors que le Fil utilise explicitement "installer un algorithme déterministe et fiable".