yarn.lock

Щоб мати несуперечливі установки на різних комп’ютерах, Yarn необхідно більше інформації щодо ваших пакетів з package.json. Yarn необхідно зберігти конкретні версії версії всіх встановленних залежностей.

Для цього Yarn використовує файл yarn.lock в кореневій теці вашого проекту. Ці “lockfiles” виглядають приблизно так:

# 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"

Це можна порівняти з файлами блокування в інших менеджерах пакетів таких як Bundler або Cargo. Також це схоже на npm npm-shrinkwrap.json, але він більш надійний і дає повторювальний результат.

Керований Yarn’ом

Ваш файл yarn.lock автоматично генерується Yarn і вносити зміни до нього має лише Yarn. Коли ви додаєте/оновлюється/видаляєте залежності за допомогою команд Yarn, він автоматично оновить ваш файл yarn.lock. Не вносіть зміни до цього файлу напряму, так як дуже легко щось зламати в ньому.

Тільки поточний пакет

Під час встановлення пакетів Yarn буде використовувати файл yarn.lock з верхнього рівня і буде ігнорувати будь-який файл yarn.lock, який знаходиться в залежностях. Файл вищого рівня yarn.lock включає в себе все, що необхідно Yarn, щоб заблокувати версії всіх пакетів серед усіх залежностей.

Внесіть до системи контроля версій

Всі файли yarn.lock мають бути внесені до системи контроля версій (наприклад git або mercurial). Це дозволить Yarn’у встановити такі самі залежності на всіх комп’ютерах, будь-то сервер або комп’ютер вашого колеги.

Розробники інструментарію і бібліотек мають включати yarn.lock в систему контроля версій. Не бійтесь додавати файл yarn.lock, так як він ніяк не вплине на користувачів вашої бібліотеки.

Дивись https://yarnpkg.com/blog/2016/11/24/lockfiles-for-all/.