Чому б я не використовував npm для встановлення пряжі?


79

У повідомленні в блозі, де анонсується пряжа (альтернативний клієнт npm), вони кажуть: "Найпростіший спосіб розпочати роботу - це біг npm install -g yarn". Але якщо ви перейдете на сторінку "встановити пряжу" в їх документах , "npm install yarn" не відображається ні на одній із сторінок встановлення для певної платформи, і вона пропонується лише як третій із трьох варіантів на сторінці "Альтернативи" . Крім того, коли ви npm installпрядите, воно друкує попередження про непридатність: "Рекомендується встановлювати пряжу, використовуючи власний метод установки для вашого середовища." Тож моє запитання полягає в тому, що npm installце найпростіший спосіб встановлення, чому це не рекомендований спосіб у їх документах? Чи є недоліки у встановленні пряжі npm?


npm install точно вказано: yarnpkg.com/en/docs/install#install-via-npm
halfpastfour.am

1
@ halfpastfour.am Коли я заходжу за цим посиланням, воно перенаправляє мене на yarnpkg.com/en/docs/install#mac-stable, в якому не вказано npm як спосіб встановлення
Chris Arnesen,

1
Гаразд, спробуйте це і прокрутіть вниз yarnpkg.com/en/docs/install#alternatives-stable
halfpastfour.am

@ halfpastfour.am Як зазначено в тексті запитання, npm справді вказаний як третій із трьох варіантів на сторінці "альтернативи".
Кріс Арнесен,

Відповіді:


78

Редагувати (2020/11/23):

Дякуємо @Kissaki за надання в коментарях оновлених порад щодо пряжі.

Починаючи з Yarn 2.x, команда Yarn змінила свої поради і тепер пропонує встановити інструмент за допомогою npm. Ця порада зосереджується на перевагах блокування версії Пряжі, що використовується для кожного проекту. Це дозволяє проектам бути стійкими до варіацій між версіями пряжі.

З нової сторінки "Встановлення" пряжі :

Використання єдиного менеджера пакетів у вашій системі завжди було проблемою. Для стабільності встановлення потрібно запускати з однаковою версією менеджера пакетів у всіх середовищах, інакше існує ризик ввести випадкові порушення між версіями - зрештою, саме тому поняття lockfile було введено в першу чергу! І оскільки пряжа в певному сенсі є вашою першою залежністю від проекту, має сенс також її «зафіксувати».

З цієї причини Пряжа 2 та пізніші версії мають керуватися побічним проектом.

Це схоже на інші методи блокування версій інструментів побудови для кожного проекту. Див . Приклад Gradle Wrapper .

Переваги автономної установки пряжі досить швидко руйнуються, особливо із зміною напрямку команди пряжі. Зараз пропонується установка за допомогою npm, і, здається, на сайті Yarn 2.x на їх веб-сайті більше не пропонуються інструкції щодо автономних установок.


Оригінальна відповідь:

На думку розробників проекту "Пряжа", встановлення Пряжі через npm суперечить цілям проекту , може спричинити проблеми і, як правило, гірше, ніж методи встановлення для певної платформи.


Переваги рекомендованої установки для конкретної платформи:

  • Команди Пряжі розглядають npm як небезпечний та ненадійний. З розділу "Встановити через npm" на сторінці "Встановлення" пряжі :

Примітка: Встановлення пряжі через npm зазвичай не рекомендується. Встановлення Yarn за допомогою npm не є детермінованим, пакет не підписаний, і єдиною перевіркою цілісності є базовий хеш SHA1, що становить ризик для безпеки при встановленні загальносистемних програм.

З цих причин настійно рекомендується встановлювати Пряжа способом, що найкраще підходить для Вашої операційної системи.

  • Запуск Yarn, який є окремою утилітою диспетчера пакетів, через npm може призвести до виникнення крайових проблем (див. Випуск 2072 )
  • Встановлення через менеджер системних пакетів відокремлює Yarn від npm, дозволяючи запускати Yarn без npm
  • Зазвичай менеджер системних пакетів працює регулярно, постійно оновлюючи Пряжу
  • Встановлення пряжі через npm відбувається повільно

Переваги npm install -g yarn:

  • Швидко і просто ( npm install -g yarn)
  • Можна зробити в будь-якому середовищі npm (агностичне для платформи)
  • Знайома парадигма та процес для розробників Node.js
  • Можна легко оновити (npm update -g yarn )
    • Команда поновлення Пряжі існує ( yarn self-update) , але це , здається, зламано
  • Відсутність залежності від менеджерів системних пакетів
  • Можна використовувати різні версії Yarn для різних проектів або різні версії Node.js через nvm

Аргументи системного пакета для рекомендованої інсталяції, як правило, розбиваються, посилаючись на Windows, де немає офіційного менеджера пакетів (якщо не рахувати Windows Update). Крім того, менеджери пакетів Windows, такі як Chocolatey, часто не налаштовані на автоматичне оновлення.

Я не впевнений, що повністю погоджуюсь з рішенням команди "Пряжа" щодо цього, але вони роблять деякі справедливі зауваження. Проект "Пряжа" все ще молодий, і якщо він хоче стати заміною npm, тоді не має сенсу заохочувати npm як основного інсталятора.

Незважаючи на це, на сьогодні, в більшості випадків, встановлення через npm, здається, працює чудово


Джерела:


14
Думка: Здається, справжня відповідь полягає в тому, що пряжа є конкурентом npm. Тому їм потрібен шлях до усиновлення, який не передбачає npm. Я особисто погоджуюсь, що пряжа краще, але мені здається трохи безглуздим стверджувати, що встановлення ще одного менеджера пакунків (Homebrew) є кращим варіантом, ніж використання npm, яке вже встановлено, працює на різних платформах і може змінюватися між проектами.
Ynot

Інша думка: найпростіший та гнучкий спосіб - це через curl -o- -L https://yarnpkg.com/install.sh | bash. Їх поради мають сенс; чому залежати від іншого програмного забезпечення, коли бажаєте встановити менеджер залежностей ? Я думаю, що це головна причина; ділова конкуренція розгортається справедливо, оскільки вони навіть пропонують NPM як один із методів. Оскільки, оскільки вони написали програмне забезпечення, щоб компенсувати безлад, який NPM та процеси його розвитку стали за останні роки, цілком очевидно, що вони підкреслюють всі його недоліки та відмовляють використовувати його як вихідну точку для пряжі.
Kamafeather

Інша думка: якщо пряжа справді краща (я погоджуюсь), не має значення, використовуєте ви npm для встановлення чи ні. Ми всі знаємо, що ви востаннє відкривали IE, щоб завантажити Chrome.
Пенг на ZenUML.com

1
Я думаю, що проблема з кешем, яка сталася під час встановлення пряжі з npm, може трапитися і під час інсталяції її іншим способом, тому я вважаю упередженим представляти подібні речі.
Jean Paul

1
Здається, це вже не так. Через 3 роки (до цієї відповіді) установлювана версія 1 розміщується лише на «класичному» піддомені веб-сайту про пряжу. На головній сторінці встановлення йдеться про версії 1 та 2, а 2 є наступницею 1. Також йдеться лише про встановлення npm для встановлення. Отже, здається, зараз, і вперед інструмент npm - це шлях.
Кіссакі,

24

Немає видимого недоліку у встановленні пряжі npm. Насправді я вибрав цей метод сам із кількох причин:

  1. Очевидно, це найпростіший спосіб зробити це. npm i --global yarnі ви можете буквально замінити npmнаyarn на консолі негайно.
  2. Якщо ви використовуєте nvmта підтримуєте різні проекти коду для кожної версії NodeJS, то ви можете встановити Yarn в одній версії, а не мати її в іншій
  3. Чесно кажучи, єдина причина, з якої я можу думати про те, що вона не згадується у встановленнях конкретних платформ, полягає в тому, що npm є агностиком платформи

7

Оскільки npmне є платформою і працює майже на будь-якій системі, вона вказана як альтернатива. Немає переваг чи недоліків перед встановленнями, що стосуються певної платформи. Різниця полягала б у місці встановлення, але всі методи викривають глобальнийyarn команду вашому CLI.

Я б стверджував, що вони вказали це як "найпростіший спосіб", оскільки більшість людей вже добре знайомі npm.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.