Должен ли я совершить пряжу.заблокируйте файл и для чего он нужен?


пряжа создает yarn.lock файл после выполнения yarn install.

должно ли это быть зафиксировано в репозитории или проигнорировано? Для чего он нужен?

7 200

7 ответов:

Да, вы должны проверить его, посмотреть миграция из npm

пряжа будет генерировать пряжу.блокировку файла в корневом каталоге вашего пакета. Вам не нужно читать или понимать этот файл - просто проверьте его в системе управления версиями.

зависит от того, что ваш проект-это:

  1. ваш проект приложения? Затем:да
  2. ваш проект библиотеки? Если так: нет

более подробное описание этого можно найти в эта проблема GitHub где один из создателей пряжи, например. говорит:

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

только yarn.lock - будет использоваться файл проекта верхнего уровня. Поэтому, если только один проект не будет использоваться автономно и не будет установлен в другой проект, тогда нет смысла совершать какие-либо yarn.lock-файл – вместо этого он всегда будет package.json-файл, чтобы передать какие версии зависимостей проекта ожидает потом.

Я вижу, что это два отдельных вопроса в одном. Позвольте мне ответить на оба вопроса.

должны ли вы зафиксировать файл в репо?

да. Как уже упоминалось в ответ ckuijjer рекомендуется Руководство По Миграции включить этот файл в репо. Читайте дальше, чтобы понять почему вы должны это сделать.

что это yarn.lock?

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

чтобы понять, зачем нужен этот файл, вам сначала нужно понять, в чем была проблема с оригинальным NPM package.json. При установке пакета NPM будет хранить диапазон допустимых ревизий зависимости вместо конкретной ревизии (semver). NPM попытается получить обновление зависимости последняя версия зависимости в пределах указанного диапазон (т. е. неразрывные обновления патчей). Есть две проблемы с этим подходом.

  1. авторы зависимостей могут выпускать обновления версии патча, фактически вводя критическое изменение, которое повлияет на ваш проект.

  2. два разработчика работает 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).