Передача каталога .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": {
...
}
}