Как добиться сбоя пряжи при установке пряжи, когда package.json и yarn.lock не синхронизированы?

В проекте я заменил npm на yarn, чтобы воспользоваться его преимуществами, а также обеспечить блокировку наших зависимостей с помощью yarn.lock.

Теперь разработчик добавил библиотеку с npm@4, которая изменила только package.json, а не yarn.lock, конечно.

Я ожидал, что команда yarn install вылетит на сервере сборки, но у пряжи есть — для меня неожиданное — добавление этих библиотек в их самой последней версии, а затем обновление yarn.lock на удаленном сервере:

$ yarn install
[1/4] Resolving packages...
[2/4] Fetching packages...
warning [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 5.07s.

Это противоречит цели пряжи, так как задание сборки не отправляет yarn.lock обратно в репозиторий и не должно этого делать.

Я хочу, чтобы каждый разработчик отвечал за версию, которую он проверяет.

Следовательно, есть ли способ завершить работу yarn install с кодом ошибки, если package.json и yarn.lock не синхронизированы?


person k0pernikus    schedule 10.08.2017    source источник
comment
Я открыл вопрос в репозитории пряжи на github   -  person k0pernikus    schedule 11.08.2017


Ответы (1)


Вам нужен параметр --frozen-lockfile:

$ yarn install --frozen-lockfile
yarn install v0.27.5
warning ../package.json: No license field
[1/4] Resolving packages...
error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.

Это также было недавно разъяснено в документах по установке пряжи:

yarn install

Установите все зависимости, перечисленные в package.json, в локальную папку node_modules.

Файл yarn.lock используется следующим образом:

  • Если yarn.lock присутствует и его достаточно для удовлетворения всех зависимостей, перечисленных в package.json, устанавливаются точные версии, записанные в yarn.lock, и yarn.lock останется без изменений. Yarn не будет проверять наличие новых версий.
  • Если yarn.lock отсутствует или его недостаточно для удовлетворения всех зависимостей, перечисленных в package.json (например, если вы вручную добавили зависимость в package.json), Yarn ищет самые новые доступные версии, которые удовлетворяют ограничениям в package.json. .json. Результаты записываются в yarn.lock.

Если вы хотите, чтобы yarn.lock не обновлялся, используйте --frozen-lockfile.

person k0pernikus    schedule 10.08.2017