yarn.lock

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

Для этого Yarn использует файл yarn.lock в корневом каталоге вашего проекта. Эти “файлы блокировки” выглядят так:

# 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.lock. Не редактируйте этот файл напрямую, так как его легко испортить.

Только текущий пакет

Во время установки Yarn будет использовать yarn.lock только верхнего уровня и проигнорирует любые другие yarn.lock, существующие в зависимостях. Файл верхнего уровня yarn.lock содержит всё, что нужно Yarn для блокировки версий всех пакетов во всём дереве зависимостей.

Проверка в системе контроля версий

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

Авторам фреймворков и библиотек также следует проверять наличие yarn.lock в системе контроля версий. Не беспокойтесь о публикации файла yarn.lock, он не повлияет на пользователей библиотеки.

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