PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Зачем нужен Yarn.lock?

Продвинутые темы

`yarn.lock` нужен, чтобы зафиксировать точные версии всех зависимостей (включая вложенные) — это гарантирует одинаковую установку пакетов у всех разработчиков и в CI/проде.

Проблема без lock-файла

В package.json версии указаны диапазонами (^1.2.0), поэтому yarn install в разное время или у разных людей может установить разные версии — «работает у меня, не работает у тебя».

Что делает yarn.lock

Фиксирует точные версии всех пакетов (прямых и транзитивных) и их хеши:

lodash@^4.17.0:
  version "4.17.21"
  resolved "https://registry.yarnpkg.com/lodash/..."
  integrity sha512-...

При установке Yarn читает lock-файл и ставит именно эти версии.

Зачем нужен

  • Детерминированность — одинаковые зависимости у всех и в CI/проде.
  • Воспроизводимость сборки — исключает «поплывшие» версии.
  • Безопасность — integrity-хеши проверяют целостность пакетов.
  • Явные изменения — обновление зависимости видно в диффе lock-файла.

Правила

  • Коммитить yarn.lock в репозиторий (обязательно).
  • Не редактировать вручную — генерируется автоматически.
  • В CI использовать yarn install --immutable (Yarn 2+; в Yarn 1 — --frozen-lockfile), чтобы не менять lock.

Аналоги

  • npm — package-lock.json.
  • pnpm — pnpm-lock.yaml.

Коротко для собеседования

yarn.lock фиксирует точные версии всех зависимостей (прямых и вложенных) с хешами, обеспечивая детерминированную воспроизводимую установку у всех разработчиков и в CI/проде (в отличие от диапазонов в package.json). Коммитится в репозиторий, не редактируется вручную. Аналоги — package-lock.json (npm), pnpm-lock.yaml.

Другие вопросы раздела