TL; TR: Все проекты, включая библиотеки, должны зафиксировать файл yarn.lock.

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

Тем не менее, я обнаружил, что сомневаюсь в его использовании внутри библиотек (поскольку они в любом случае включены сторонними проектами) после того, как здесь было сделано замечание. Поэтому я спросил себя: должны ли мы зафиксировать файл `yarn.lock` в репозиториях библиотек? Возможно, это не такой очевидный вопрос.

На первый взгляд может показаться, что файл yarn.lock внутри опубликованной библиотеки в обязательном порядке обязывает приложение использовать его. Даже конфликтует с зависимыми из-за плоского режима пряжи.

Однако, прочитав, я нашел этот вопрос с просьбой разъяснить этот вопрос. Затем @thejameskyle (один из членов репозитория yarn на Github) ответил: Все проекты (приложения и библиотеки) должны проверяться в файле yarn.lock. Он также сделал это более конкретным на сайте пряжи.

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

Это проясняет это, для меня. Совершайте это всегда.

Однако, если вам нужны дополнительные разъяснения, это довольно легко проверить. Создайте новый файл package.json:

{
  "name": "project-name",
  "dependencies": {
    "react-datepicker": "0.37.*",
    "tether": "1.0.0"
  }
}

Затем установите его с помощью пряжи:

$ yarn

Проверка установленных модулей, другой пакет, используемый react-datepicker в версии 1.3.2, будет добавлен в версии 1.0.0, указывается в файле package.json верхнего уровня. Таким образом, кажется, что разработчик обязан проверять используемые версии.

Примечание: это младший разработчик для жизни (выражение, созданное @dan_abramov, которое мне нравится :). Если у вас есть критика, разногласия, обсуждение или обнаружены какие-либо ошибки, пожалуйста, мягко сообщите мне об этом.