-
Notifications
You must be signed in to change notification settings - Fork 0
Зачем нужен yarn.lock
yarn.lock
- это файл, находящийся в корне проекта, в котором фиксируются версии зависимостей.
Представим, что есть проект и 2 разработчика: A и B. Оба склонировали проект в одно время и приступили к работе. Через пару дней разработчик A попросил разработчика B запустить его проект и проверить его работоспособность, предварительно сделав коммит. Разработчик B переключился в ветку разработчика A, сделал install и... проект не запустился, хотя код и package.json
одинаковые.
Как это могло произойти?
Чуть позже выяснилось, что за эти 2 дня у библиотеки С
, которая использовалась на проекте, вышло обновление, ломающее обратную совместимость, но разработчик A свои зависимости в ходе работы не обновлял, так что его проект работал со старой версией библиотеки, но когда в его ветку переключился разработчик B - он установил последнюю версию библиотеки C
, на которой проект перестал работать
На проекте нужно создать регламент версий зависимостей, при которых проект будет работать
Решение - yarn.lock
Однозначно нет. Его нельзя трогать руками (да и нет в этом смысла), а при его удалении воспроизведется сценарий из нашей ситуации выше. Да, он сгенерируется снова, но в yarn.lock будут зафиксированы уже новейшие версии зависимостей, при которых проект возможно перестанет работать. Yarn модифицирует его автоматически, при необходимости.
Полагаю, после ситуации описанной выше вопрос скорее риторический. Да, нужно
Из package.json'ов на проекте. При первой установке yarn берет зависимости в соответствии с теми, что указаны в пекеджах, а потом эти зависимости фиксируются