Почему бы мне не использовать npm для установки пряжи?
В сообщение в блоге, объявляющее пряжу (альтернативный клиент npm), они говорят: "Самый простой способ начать - запустить npm install -g yarn
". Но если вы перейдете к ," npm install yarn "не указана ни на одной из платформ и он предлагается только в качестве третьего из трех вариантов на странице" Альтернативы ". Кроме того, когда вы npm install
пряжа, он печатает предупреждение об устаревании:" Рекомендуется устанавливать пряжу, используя собственный метод установки для вашей среды". Поэтому мой вопрос: если npm install
- самый простой способ установки, почему он не рекомендуется в своих документах? Есть ли недостатки в установке пряжи с помощью npm
?
Ответы
Ответ 1
Нет никаких видимых недостатков для установки пряжи через npm
. Фактически я выбрал этот метод сам по нескольким причинам:
- Это, безусловно, самый простой способ сделать это.
npm i --global yarn
, и вы
может буквально заменить npm
на yarn
на консоли сразу.
- Если вы используете
nvm
и поддерживаете разные проекты кода для каждой версии NodeJS, вы можете установить пряжу на одну версию и не иметь ее на другой
- Честно говоря, единственная причина, по которой я могу думать о том, что она не упоминается в установках Platform Specific, заключается в том, что npm является агностическим для платформы
Ответ 2
В соответствии с инструкторами по проектированию пряжи, устанавливая пряжу через npm идет вразрез с целями проекта, может вызвать проблемы и, в целом, хуже, чем методы установки на платформе.
Преимущества рекомендуемой для платформы установки:
-
Команды пряжи расценивают npm как ненадежные и ненадежные. Из раздела "Установить через npm" на пряже "Установка" страница:
Примечание. Установка пряжи через npm обычно не рекомендуется. Установка пряжи с npm не является детерминированной, пакет не подписан, и единственная проверка целостности - это основной хэш SHA1, который представляет угрозу безопасности при установке общесистемных приложений.
По этим причинам настоятельно рекомендуется установить пряжу методом установки, наиболее подходящим для вашей операционной системы.
-
Running Yarn, которая является отдельной утилитой диспетчера пакетов, через npm может привести к проблемам с кратким случаем (см. вопрос 2072)
- Установка через диспетчер системных пакетов развязывает Пряжа из npm, позволяющая запускать пряжу без npm
- Менеджер системных пакетов обычно работает регулярно, сохраняя обновленную пряжу
- Установка пряжи через npm медленный
Преимущества npm install -g yarn
:
- Быстрый и простой (
npm install -g yarn
)
- Может быть сделано в любой среде npm (платформа-агностик)
- Знакомая парадигма и процесс для разработчиков Node.js
- Может быть легко обновлен (
npm update -g yarn
)
- Существует команда обновления строки (
yarn self-update
), но она кажется сломанной
- Не зависит от менеджеров системных пакетов
- Можно использовать разные версии пряжи для разных проектов или разных версий Node.js через
nvm
Аргументы диспетчера системных пакетов для рекомендуемой установки имеют тенденцию разбиваться при обращении к Windows, где нет официального диспетчера пакетов (если вы не подсчитываете Центр обновления Windows). Кроме того, диспетчеры пакетов Windows, такие как Chocolatey, часто не настроены для автоматического обновления.
Я не уверен, что полностью согласен с решением команды Yarn по этому поводу, но они делают некоторые справедливые моменты. Проект "Пряжа" еще молод, и если он станет заменой для npm, тогда было бы бессмысленно поощрять npm в качестве основного установщика.
Независимо от того, что установки через npm кажутся в настоящее время очень хорошими в настоящее время.
Источники:
Ответ 3
Поскольку npm
не является специфичным для платформы и работает практически в любой системе, он указан как альтернатива. Нет никаких преимуществ или недостатков в отношении конкретных установок платформы. Разница была бы в местоположении установки, но все методы отображают глобальную команду yarn
для вашего CLI.
Я бы сказал, что они перечислили его как "самый простой способ", потому что большинство людей уже знакомы с npm
.