yarn.lock

Dans le but d’avoir des installations cohérentes sur différents ordinateurs, Yarn a besoin de plus d’informations que les dépendances configurées dans votre package.json. Yarn a besoin de stocker précisément quelle version de chaque dépendance est installée.

Pour cela, Yarn utilise un fichier yarn.lock à la racine de votre projet. Ce “fichier verrou” ressemble à ceci :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
package-1@^1.0.0:
  version "1.0.3"
  resolved "https://registry.npmjs.org/package-1/-/package-1-1.0.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
package-2@^2.0.0:
  version "2.0.1"
  resolved "https://registry.npmjs.org/package-2/-/package-2-2.0.1.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
  dependencies:
    package-4 "^4.0.0"
package-3@^3.0.0:
  version "3.1.9"
  resolved "https://registry.npmjs.org/package-3/-/package-3-3.1.9.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
  dependencies:
    package-4 "^4.5.0"
package-4@^4.0.0, package-4@^4.5.0:
  version "4.6.3"
  resolved "https://registry.npmjs.org/package-4/-/package-4-2.6.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"

C’est comparable aux fichiers verrous des autres gestionnaires de package comme Bundler ou Cargo. C’est également similaire au fichier npm-shrinkwrap.json de npm, cependant c’est sans perte de données et cela permet de créer des résultats reproductibles.

Géré par Yarn

Votre fichier yarn.lock est généré automatiquement et devrait être manipulé par Yarn uniquement. Lorsque vous ajoutez/mettez à jour/supprimez des dépendances avec le CLI de Yarn, cela va automatiquement mettre à jour votre fichier yarn.lock. Ne modifiez pas ce fichier directement car il est facile de casser quelque chose.

Package courant uniquement

Lors de l’installation, Yarn n’utilisera que le fichier yarn.lock du plus haut niveau et ignorera tous les fichiers yarn.lock pouvant exister dans les dépendances. Le fichier yarn.lock de plus haut niveau inclue tout le nécessaire pour que Yarn puisse verrouillez les versions de tous les packages sous forme d’une arborescence de dépendances.

Archivage dans le gestionnaire de sources

Les fichiers yarn.lock devraient être archivés dans le gestionnaire de sources (par exemple git ou mercurial). Cela permet à Yarn d’installer exactement les même dépendances sur différents ordinateurs, que ce soient ceux de vos collègues ou le serveur d’intégration continue.

Les auteurs de frameworks ou de bibliothèques devraient également archiver leur yarn.lock dans leur gestionnaire de sources. Rassurez-vous, la publication du fichier yarn.lock n’aura aucun impact sur les utilisateurs de votre bibliothèque.

Voir https://yarnpkg.com/blog/2016/11/24/lockfiles-for-all/.