Пряжа создает файл yarn.lock
после выполнения yarn install
.
Должно ли это быть передано в репозиторий или проигнорировано? Для чего это?
Пряжа создает файл yarn.lock
после выполнения yarn install
.
Должно ли это быть передано в репозиторий или проигнорировано? Для чего это?
Да, вы должны проверить его, см. Миграция с npm
Пряжа создаст файл narn.lock в корневом каталоге вашего пакета. Вам не нужно читать или понимать этот файл - просто проверьте его на исходный элемент управления.
В зависимости от вашего проекта:
Более подробное описание этого можно найти в этой проблеме GitHub, где один из создателей пряжи, например. говорит:
Пакет .json описывает предполагаемые версии, желаемые оригинальным автором, в то время как yarn.lock описывает последнюю известную конфигурацию для данного приложения.
Будет использоваться только yarn.lock
файл проекта верхнего уровня. Поэтому, если один проект не будет использоваться автономно и не будет установлен в другой проект, тогда нет смысла использовать какой-либо yarn.lock
файл - вместо этого он всегда будет до package.json
файла, чтобы передать какие версии зависимостей проект ожидает тогда.
Я вижу, что это два отдельных вопроса в одном. Позвольте мне ответить на оба вопроса.
Вы должны зафиксировать файл в репо?
Да. Как упоминалось в ответе ckuijjer, в Руководстве по миграции рекомендуется включить этот файл в репозиторий. Читайте дальше, чтобы понять, зачем вам это нужно.
Что такое yarn.lock
?
Это файл, в котором хранятся точные версии зависимостей для вашего проекта вместе с контрольными суммами для каждого пакета. Это способ обеспечения согласованности для ваших зависимостей.
Чтобы понять, зачем нужен этот файл, сначала нужно понять, в чем была проблема оригинального NPM package.json
. Когда вы устанавливаете пакет, NPM будет хранить диапазон разрешенных ревизий зависимости вместо конкретной ревизии (semver). NPM будет пытаться получить обновление самой последней версии зависимости в указанном диапазоне (то есть обновления исправлений без прерываний). У этого подхода есть две проблемы.
Авторы зависимостей могут выпускать обновления версий исправлений, хотя на самом деле вносят существенные изменения, которые повлияют на ваш проект.
Два разработчика, использующие npm install
в разное время, могут получить различный набор зависимостей. Что может привести к невозможности воспроизведения ошибки в двух абсолютно одинаковых средах. Это может вызвать проблемы стабильности сборки для серверов CI, например.
Пряжа, с другой стороны, идет по пути максимальной предсказуемости. Создает файл yarn.lock
для сохранения точных версий зависимостей. При наличии этого файла пряжа будет использовать версии, хранящиеся в yarn.lock
, вместо разрешения версий из package.json
. Эта стратегия гарантирует, что ни одна из проблем, описанных выше, не произойдет.
yarn.lock
похож на npm-shrinkwrap.json
, который может быть создан командой npm shrinkwrap
. Проверьте этот ответ, объясняя различия между этими двумя файлами.
Я бы предположил, да, поскольку версия Yarn имеет собственный файл yarn.lock: https://github.com/yarnpkg/yarn
Он используется для детерминированного разрешения зависимости пакета.
Из моего опыта я бы сказал, что да, мы должны зафиксировать файл yarn.lock
. Это гарантирует, что, когда другие люди будут использовать ваш проект, они получат те же зависимости, что и ваш проект.
Когда вы запускаете ни пряжу, ни пряжу, Yarn будет генерировать файл yarn.lock в корневом каталоге вашего пакета. Вам не нужно читать или понимать этот файл - просто проверьте его на исходный контроль. Когда другие люди начинают использовать пряжу вместо npm, файл yarn.lock гарантирует, что они получат точно те же зависимости, что и у вас.
Можно утверждать, что мы можем достичь этого, заменив ^
на --
. Да, мы можем, но в целом мы видели, что большинство пакетов npm
поставляется с нотой ^
, и мы должны вручную менять нотацию для обеспечения статической зависимости. Но если вы используете yarn.lock
, она будет программно обеспечивать вашу правильная версия.
Также как Эрик Эллиот сказал здесь
Не .gitignore пряжа. Он должен обеспечить детерминированное разрешение зависимостей, чтобы избежать ошибок "работает на моей машине".
Да! yarn.lock
должен быть зарегистрирован, чтобы любой разработчик, устанавливающий зависимости, получил точно такой же вывод! Например, с npm [который был доступен в октябре 2016 года], вы можете иметь локально установленную версию patch
(скажем, 1.2.0), в то время как новый разработчик, работающий с новой версией install
, может получить другую версию. версия (1.2.1).
Да, Ты должен это совершить. Подробнее о файле yarn.lock см. официальные документы здесь.
Вы должны:
yarn install --frozen-lockfile
и NOT yarn install
по умолчанию как локально, так и на серверах сборки CIyarn install
может неожиданно изменить ваш yarn.lock, делая заявления о повторяющихся сборках недействительными. Вы должны использовать yarn install
только для инициализации yarn.lock и для его обновления.
Кроме того, особенно в больших командах может возникнуть много шума из-за изменений в замке пряжи только потому, что разработчик настраивал свой локальный проект.
Для получения дополнительной информации прочитайте мой ответ о npm package-lock.json, поскольку это применимо и здесь.