Почему бы мне не использовать npm для установки пряжи?

В сообщении блога, объявляющем пряжу (альтернативный клиент npm), они говорят: «Самый простой способ получить началось это запустить npm install -g yarn ". Но если вы перейдете на страницу «установить пряжу» в их документации, «npm install yarn» не будет не указан ни на одной из страниц установки, зависящих от платформы, и предлагается только как третий из трех вариантов на странице «Альтернативы». Кроме того, когда вы npm install yarn, он выводит предупреждение об устаревании: «Рекомендуется установить Yarn, используя собственный метод установки для вашей среды». Итак, мой вопрос: если npm install самый простой метод установки, почему он не рекомендуется в их документации? Есть ли недостатки в установке пряжи с использованием npm?


person Chris Arnesen    schedule 13.10.2016    source источник
comment
npm install определенно указан в списке: yarnpkg.com/en/docs/install#install- через-npm   -  person halfpastfour.am    schedule 14.01.2019
comment
@ halfpastfour.am Когда я перехожу по этой ссылке, она перенаправляет меня на yarnpkg.com/en/docs / install # mac-stable, в котором npm не указан в качестве метода установки.   -  person Chris Arnesen    schedule 20.01.2019
comment
Акрайт, попробуйте это и прокрутите вниз yarnpkg.com/en/docs/install#alternatives-stable   -  person halfpastfour.am    schedule 20.01.2019
comment
@ halfpastfour.am Как указано в тексте вопроса, npm действительно указан как третий из трех вариантов на странице альтернатив.   -  person Chris Arnesen    schedule 21.01.2019


Ответы (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 обычно не рекомендуется. Установка Yarn с помощью npm не является детерминированной, пакет не подписан, и единственная выполняемая проверка целостности - это базовый хэш SHA1, который представляет угрозу безопасности при установке общесистемных приложений.

По этим причинам настоятельно рекомендуется установить Yarn с помощью метода установки, который лучше всего подходит для вашей операционной системы.

  • Запуск Yarn, отдельной утилиты диспетчера пакетов, через npm может привести к краевым проблемам (см. проблема 2072)
  • Установка через системный менеджер пакетов отделяет Yarn от npm, что позволяет запускать Yarn без npm.
  • Системный менеджер пакетов обычно запускается регулярно, постоянно обновляя Yarn.
  • Установка Yarn через npm выполняется медленно

Преимущества npm install -g yarn:


Аргументы системного диспетчера пакетов в пользу рекомендуемой установки обычно не работают, когда речь идет о Windows, где нет официального диспетчера пакетов (если вы не учитываете Центр обновления Windows). Кроме того, менеджеры пакетов Windows, такие как Chocolatey, часто не настроены на автоматическое обновление.

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

Тем не менее, установка через npm в большинстве случаев пока работает нормально.


Источники:

person Mike Hill    schedule 12.04.2017
comment
Мнение: Похоже, настоящий ответ заключается в том, что пряжа является конкурентом npm. Поэтому им нужен способ усыновления, не связанный с npm. Я лично согласен с тем, что yarn лучше, но мне кажется немного глупым говорить, что установка еще одного менеджера пакетов (Homebrew) - это лучший вариант, чем использование уже установленного npm, работает кроссплатформенно и может управлять версиями между проектами. - person Ynot; 23.02.2019
comment
Другое мнение: самый простой и гибкий способ - через curl -o- -L https://yarnpkg.com/install.sh | bash. Их совет имеет смысл; зачем зависеть от другого программного обеспечения, когда вы хотите установить менеджер зависимостей? Я думаю, это основная причина; деловая конкуренция ведется честно, поскольку они даже предлагают NPM как один из методов. Просто, поскольку они написали программное обеспечение, чтобы компенсировать беспорядок, в который превратился NPM и его процессы разработки за последние годы, довольно очевидно, что они подчеркивают все его недостатки и отговаривают использовать его в качестве отправной точки для Yarn. - person Kamafeather; 26.06.2019
comment
Другое мнение: если yarn действительно лучше (я согласен), на самом деле не имеет значения, используете ли вы npm для установки или нет. Все мы знаем, что в последний раз вы открывали IE для загрузки Chrome. - person Devs love ZenUML; 22.04.2020
comment
Я думаю, что проблема с кешем, которая возникла при установке пряжи с помощью npm, также может возникнуть при ее установке другим способом, поэтому я считаю это предвзятым представлять такие вещи. - person Jean Paul; 12.06.2020
comment
По моему недавнему опыту, npm install of yarn не дает надежного исполняемого файла, который можно использовать. - person nroose; 24.07.2020
comment
Сегодня я испытал свой первый случай, когда было лучше установить yarn через npm: Netlify. Поскольку я сначала выполнил официальную рекомендацию и установил через msi, yarn отсутствовала в package.json, в результате чего задание развертывания Netlify выдало ошибку yarn: command not found. После выполнения npm install yarn и выпуска обновленного package.json, содержащего "yarn": "^1.22.10", достаточное количество развертываний Netlify завершилось без сучка и задоринки. - person thdoan; 02.11.2020
comment
Кажется, это уже не так. 3 года спустя (к этому ответу) устанавливаемая версия 1 размещается только на 'классический' субдомен веб-сайта пряжи. На главной странице установки говорится о версиях 1 и 2, а версия 2 является преемницей 1. Это также говорит только об установке npm для установки. Таким образом, похоже, что сейчас и в будущем инструмент npm - это то, что нужно. - person Kissaki; 20.11.2020
comment
Спасибо за обновление @Kissaki! Я обновил ответ, чтобы отразить последнюю рекомендацию команды Yarn. - person Mike Hill; 24.11.2020
comment
даже после установки пряжи, как указано выше, появляется ошибка, при которой команда пряжи не найдена stackoverflow.com/questions/66637032/, проверьте и поясните - person vikramvi; 16.03.2021

Нет видимых недостатков в установке Yarn через npm. На самом деле я сам выбрал этот метод по нескольким причинам:

  1. Очевидно, это самый простой способ сделать это. npm i --global yarn, и вы можете буквально сразу заменить npm на yarn на консоли.
  2. Если вы используете nvm и поддерживаете разные проекты кода для каждой версии NodeJS, вы можете установить Yarn в одной версии и не иметь его в другой.
  3. Честно говоря, единственная причина, по которой я могу думать о том, что он не упоминается в установках, специфичных для платформы, заключается в том, что npm не зависит от платформы.
person nikjohn    schedule 14.10.2016

Поскольку npm не зависит от платформы и работает практически в любой системе, он указан как Альтернатива. Нет никаких преимуществ или недостатков по сравнению с установками для конкретной платформы. Разница будет в месте установки, но все методы предоставляют глобальную команду yarn вашему интерфейсу командной строки.

Я бы сказал, что они указали это как «самый простой способ», потому что большинство людей уже хорошо знакомы с npm.

person Mario Tacke    schedule 13.10.2016