В сообщении блога, объявляющем пряжу (альтернативный клиент npm), они говорят: «Самый простой способ получить началось это запустить npm install -g yarn
". Но если вы перейдете на страницу «установить пряжу» в их документации, «npm install yarn» не будет не указан ни на одной из страниц установки, зависящих от платформы, и предлагается только как третий из трех вариантов на странице «Альтернативы». Кроме того, когда вы npm install
yarn, он выводит предупреждение об устаревании: «Рекомендуется установить Yarn, используя собственный метод установки для вашей среды». Итак, мой вопрос: если npm install
самый простой метод установки, почему он не рекомендуется в их документации? Есть ли недостатки в установке пряжи с использованием npm
?
Почему бы мне не использовать npm для установки пряжи?
Ответы (3)
Изменить (2020/11/23):
Спасибо @Kissaki за предоставление обновленной информации о совете Yarn в комментариях.
Начиная с Yarn 2.x, команда Yarn изменила свои рекомендации и теперь предлагает установить инструмент через npm. Этот совет сосредоточен на преимуществах блокировки версии Yarn, используемой для каждого проекта. Это позволяет проектам быть устойчивыми к вариациям между версиями Yarn.
На новой странице установки Yarn:
Использование единого диспетчера пакетов в вашей системе всегда было проблемой. Для обеспечения стабильности установки должны выполняться с одной и той же версией диспетчера пакетов в разных средах, в противном случае существует риск, что мы внесем случайные критические изменения между версиями - в конце концов, именно поэтому концепция файла блокировки была введена в первую очередь! А поскольку Yarn в некотором смысле является вашей самой первой зависимостью от проекта, имеет смысл заблокировать и его.
По этой причине Yarn 2 и более поздние версии предназначены для управления отдельными проектами.
Это похоже на другие методы блокировки версий инструмента сборки для каждого проекта. См. Пример в Gradle Wrapper.
Преимущества автономной установки Yarn довольно быстро разваливаются, особенно с изменением направления команды Yarn. Теперь предлагается установка через npm, а инструкции по автономной установке больше не появляются на их сайте, начиная с Yarn 2.x.
Оригинальный ответ:
По словам специалистов по сопровождению проекта Yarn, установка Yarn через npm идет вразрез с целями проекта, может вызвать проблемы и, в общем, хуже, чем методы установки, зависящие от платформы.
Преимущества рекомендуемой установки для конкретной платформы:
- Команды Yarn считают npm небезопасным и ненадежным. Из раздела «Установка через npm» на странице установки Yarn.:
Примечание. Установка Yarn через npm обычно не рекомендуется. Установка Yarn с помощью npm не является детерминированной, пакет не подписан, и единственная выполняемая проверка целостности - это базовый хэш SHA1, который представляет угрозу безопасности при установке общесистемных приложений.
По этим причинам настоятельно рекомендуется установить Yarn с помощью метода установки, который лучше всего подходит для вашей операционной системы.
- Запуск Yarn, отдельной утилиты диспетчера пакетов, через npm может привести к краевым проблемам (см. проблема 2072)
- Установка через системный менеджер пакетов отделяет Yarn от npm, что позволяет запускать Yarn без npm.
- Системный менеджер пакетов обычно запускается регулярно, постоянно обновляя Yarn.
- Установка Yarn через npm выполняется медленно а>
Преимущества npm install -g yarn
:
- Быстро и легко (
npm install -g yarn
) - Может быть выполнено в любой среде npm (платформенно-независимый)
- Знакомая парадигма и процесс для разработчиков Node.js.
- Can be easily updated (
npm update -g yarn
)- A Yarn update command exists (
yarn self-update
) but it seems to be broken
- A Yarn update command exists (
- Нет зависимости от системных менеджеров пакетов
- Может использовать разные версии Yarn для разных проектов или разные версии Node.js через
nvm
Аргументы системного диспетчера пакетов в пользу рекомендуемой установки обычно не работают, когда речь идет о Windows, где нет официального диспетчера пакетов (если вы не учитываете Центр обновления Windows). Кроме того, менеджеры пакетов Windows, такие как Chocolatey, часто не настроены на автоматическое обновление.
Я не уверен, что полностью согласен с решением команды Yarn по этому поводу, но они делают некоторые справедливые выводы. Проект Yarn еще молод, и если он должен стать заменой npm, тогда не имеет смысла поощрять npm в качестве его основного установщика.
Тем не менее, установка через npm в большинстве случаев пока работает нормально.
Источники:
- объяснение npm и системного менеджера пакетов
- Дополнительное объяснение
- Краткий комментарий к цели приложения и пакета npm для Пряжа
- Проблема, связанная с обновлением Windows Yarn
curl -o- -L https://yarnpkg.com/install.sh | bash
. Их совет имеет смысл; зачем зависеть от другого программного обеспечения, когда вы хотите установить менеджер зависимостей? Я думаю, это основная причина; деловая конкуренция ведется честно, поскольку они даже предлагают NPM как один из методов. Просто, поскольку они написали программное обеспечение, чтобы компенсировать беспорядок, в который превратился NPM и его процессы разработки за последние годы, довольно очевидно, что они подчеркивают все его недостатки и отговаривают использовать его в качестве отправной точки для Yarn.
- person Kamafeather; 26.06.2019
package.json
, в результате чего задание развертывания Netlify выдало ошибку yarn: command not found. После выполнения npm install yarn
и выпуска обновленного package.json
, содержащего "yarn": "^1.22.10"
, достаточное количество развертываний Netlify завершилось без сучка и задоринки.
- person thdoan; 02.11.2020
Нет видимых недостатков в установке Yarn через npm
. На самом деле я сам выбрал этот метод по нескольким причинам:
- Очевидно, это самый простой способ сделать это.
npm i --global yarn
, и вы можете буквально сразу заменитьnpm
наyarn
на консоли. - Если вы используете
nvm
и поддерживаете разные проекты кода для каждой версии NodeJS, вы можете установить Yarn в одной версии и не иметь его в другой. - Честно говоря, единственная причина, по которой я могу думать о том, что он не упоминается в установках, специфичных для платформы, заключается в том, что npm не зависит от платформы.
Поскольку npm
не зависит от платформы и работает практически в любой системе, он указан как Альтернатива. Нет никаких преимуществ или недостатков по сравнению с установками для конкретной платформы. Разница будет в месте установки, но все методы предоставляют глобальную команду yarn
вашему интерфейсу командной строки.
Я бы сказал, что они указали это как «самый простой способ», потому что большинство людей уже хорошо знакомы с npm
.