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