Передача каталога .yarn в git при использовании yarn berry

В следующей версии пряжи ("ягода") в руководстве говорится, что нужно просто зафиксировать созданный каталог с именем.yarn, но если вы используете многоверсионную установку для пряжи, этот каталог будет содержать файл releases/yarn-berry.js который, кажется, представляет собой всю ягодную версию пряжи, занимающую более 2 МБ на диске.

Это кажется действительно неправильным - почему я должен использовать диспетчер пакетов для git, чтобы он работал?

4 ответа

Разработчики Yarn объясняют это в документации по установке в разделе «О глобальных установках»:

Использование единого менеджера пакетов в вашей системе всегда было проблемой. Чтобы быть стабильной, установка должна выполняться с одной и той же версией менеджера пакетов в разных средах, иначе есть риск внесения случайных критических изменений между версиями — в конце концов, именно поэтому концепция файла блокировки была введена в первую очередь! А поскольку Yarn в каком-то смысле является вашей самой первой зависимостью от проекта, имеет смысл также «заблокировать» его.

Как только Yarn отслеживается и «запирается» как зависимость для каждого проекта, он в конечном итоге становится привязанным к Git, если вы следуете стратегии Yarn 2 с нулевой установкой, обоснование которой объясняется здесь.

Я новичок в Yarn, но я провел годы, работая над devops, помогая разработчикам понять, почему их код иногда корректно собирался на половине ноутбуков команды, но не на другой половине, или внезапно начинал давать сбои при сборке в CI при продолжении работы. работать в другом месте. Пытаюсь сохранить версию npmсогласованность на каждом компьютере и кодовой базе в компании была практически невозможна, учитывая, что Node постоянно обновляется, но привязывает каждый проект к своей конкретной версии Yarn, которая, будучи привязанной к Git, гарантированно будет доступна при каждой проверке. этого проекта -- решает эту проблему.

Я написал небольшой инструмент для тех людей, которые не хотят размещать двоичный файл Yarn 2 в своих репозиториях. Если у вас уже настроен Yarn 2 в вашем проекте, просто не хотите его фиксировать, вы можете запустить:

yarn dlx pinyarn

Эта команда сгенерирует два небольших файла .pinyarn.js (4 КБ) и .pinyarn.json (около 400 байт), которые вы должны зафиксировать. .pinyarn.json будет содержать URL-адреса для загрузки Yarn 2 и его плагинов из официального репозитория Yarn Berry GitHub. .pinyarn.js будет загружать двоичные файлы и плагины с этих URL-адресов, если они еще не загружены.

Вы также можете указать, какую версию Yarn 2 хотите, с помощью:

yarn dlx pinyarn 2 - последняя выпущенная версия Yarn 2, или

yarn dlx pinyarn 2.2.2 - версия 2.2.2 или

yarn dlx master - версия из последних источников, или

yarn dlx 1638 - версия из Pull Request 1638

В pinyarnрепозиторий инструментов на GitHub:https://github.com/sysgears/pinyarn

В официальной документации упоминается, что следует игнорировать, а что следует совершать. Это может решить эту проблему, я думаю.https://yarnpkg.com/getting-started/qa#what-files-should-be-gitignored

В новых документах говорится об использовании новейшей функции базового пакета Node (на сегодняшний день).

Это означает, что при использовании соответствующего узла вам нужно только разместить действительный packageManagerзначение поля в package.jsonи беги corepack enable, например

      {
  "name": "foo",
  "packageManager": "yarn@3.2.0",
  "scripts": {
  ...
  }
}
Другие вопросы по тегам