Подтвердить что ты не робот

Когда использовать пряжу поверх NPM? Каковы различия?

В чем разница между Yarn и NPM? На момент написания этого вопроса я могу найти только некоторые статьи в Интернете, показывающие, что эквивалент Yarn команды NPM, например this.

Есть ли у них одинаковые функциональные возможности (я знаю, что пряжа делает локальное кэширование и похоже, что вам нужно всего лишь загрузить пакет один раз), но кроме этого есть какие-то преимущества для перехода от NPM к пряже?

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ: март 2018 (немного поздно...)

Начиная с версии 5, npm

  • генерирует " package-lock.json блокировки" с именем package-lock.json который исправляет все ваше дерево зависимостей почти так же, как механизм блокировки пряжи (или любой другой),
  • Инструмент был сделан
  • --save теперь подразумевается для npm i
  • Лучшее использование сети и кеша

В npm 5.7.0 дополнительно введена команда npm ci для более быстрой установки зависимостей в среде непрерывной интеграции путем установки только пакетов, найденных в package-lock.json (сообщая об ошибке, если package-lock.json и package.json не синхронизированы).

Лично я все еще использую npm.


оригинал

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

Во многом:

  1. Вы всегда знаете, что вы получаете то же самое на каждой машине разработки

  2. Это паралеллизует операции, которые не выполняет npm, и

  3. Это делает более эффективным использование сети.

  4. Это может также более эффективно использовать другие системные ресурсы (например, ОЗУ).

Что люди производят опыт с этим? Кто знает, это младенец для широкой публики.

TL; DR от Иегуда Кац:

С самого начала файл блокировки Yarn гарантирует, что многократный запуск пряжи в одном и том же хранилище приводит к одним и тем же пакетам.

Во-вторых, Yarn пытается получить хорошую производительность, с холодным кешем, но особенно с горячим кешем.

Наконец, пряжа делает безопасность основной ценностью.

Хороший пост в блоге

" NPM против шпаргалки пряжи " Гант Лаборде

Чуть более длинная версия из проекта:

Быстро: пряжа кэширует каждый загружаемый пакет, поэтому в этом больше нет необходимости. Он также распараллеливает операции для максимального использования ресурсов, поэтому время установки быстрее, чем когда-либо.

Надежность: используя подробный, но лаконичный формат файла блокировки и детерминированный алгоритм для установок, Yarn может гарантировать, что установка, работающая в одной системе, будет работать точно так же, как и в любой другой системе.

Безопасный: Yarn использует контрольные суммы для проверки целостности каждого установленного пакета перед выполнением его кода.

И из README.md:

  • Автономный режим: если вы установили пакет ранее, вы можете установить его снова без подключения к Интернету.
  • Детерминистический: одни и те же зависимости будут установлены одинаково точно на каждом компьютере независимо от порядка установки.
  • Производительность сети: пряжа эффективно ставит в очередь запросы и избегает водопадов запросов, чтобы максимизировать использование сети.
  • Несколько реестров: установите любой пакет из npm или Bower и сохраните рабочий процесс пакета таким же.
  • Устойчивость сети: сбой одного запроса не приведет к сбою установки. Запросы повторяются при неудаче.
  • Плоский режим: устранение несовпадающих версий зависимостей в одной версии, чтобы избежать создания дубликатов.
  • Больше смайликов. 🐈

Ответ 2

Использовать PNPM

Преимущества PNPM над Yarn и NPM

pnpm использует жесткие ссылки и символические ссылки для сохранения одной версии модуля только один раз на диске. Например, при использовании npm или Yarn, если у вас есть 100 проектов, использующих одну и ту же версию lodash, у вас будет 100 копий lodash на диске. С помощью pnpm lodash будет сохранен в одном месте на диске, а жесткая ссылка поместит его в node_modules, где он должен быть установлен.

В результате вы экономите гигабайты места на вашем диске, и у вас намного более быстрая установка! Если вы хотите больше узнать об уникальной структуре node_modules, которую создает pnpm, и почему она отлично работает с экосистемой Node.js, прочитайте эту небольшую статью: Почему мы должны использовать pnpm?

Как установить?

npm install -g pnpm

сейчас устанавливаем пакет

pnpm install -g typescript // or your desired package

Вот индикатор выполнения, показывающий время установки, PNPM NPM, YARN и PNPM (более короткая строка лучше) enter image description here

Нажмите для полной проверки контрольной отметки

для получения более подробной информации, посетите https://www.npmjs.com/package/pnpm

Ответ 3

Когда вы устанавливаете пакет, используя Yarn (используя имя пакета добавив имя пакета), он помещает пакет на ваш диск. Во время следующей установки этот пакет будет использоваться вместо отправки HTTP-запроса для получения архива из реестра.

Yarn поставляется с удобным средством проверки лицензий, которое может стать действительно мощным в случае, если вам нужно проверить лицензии всех модулей, от которых вы зависите.

Если вы работаете над проприетарным программным обеспечением, не имеет значения, какой из них вы используете. С npm вы можете использовать npm-shrinkwrap.js, тогда как вы можете использовать yarn.lock с Yarn.

Для получения дополнительной информации, пожалуйста, прочитайте следующий блог

https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/

Ответ 4

Попытка дать лучший обзор для начинающих.

npm исторически (2010) был самым популярным менеджером пакетов для JavaScript. Если вы хотите использовать его для управления зависимостями вашего проекта, вы можете ввести следующую команду:

npm init

Это создаст файл package.json. Он содержит все зависимости проекта.

Тогда

npm install

создаст каталог node_modules и загрузит в него зависимости (которые вы добавили в файл package.json).

Он также создаст файл package-lock.json. Этот файл используется для описания сгенерированного дерева зависимостей. Это позволяет разработчикам устанавливать точно такие же зависимости. Например, вы можете представить разработчика, который обновляет зависимость до v2, а затем до v3, а другой - непосредственно до v3.

npm устанавливает зависимости недетерминированным образом, что означает, что два разработчика могут иметь разный каталог node_modules, что приводит к разному поведению. ** нпм пострадал от плохой репутации, как, например, в феврале 2018 года: в версии 5.7.0 была обнаружена проблема, из-за которой запуск sudo npm в системах Linux может изменить владельца системных файлов, навсегда нарушив работу операционной системы.

Чтобы решить эти и другие проблемы, Facebook представил новый менеджер пакетов (2016): Yarn быстрее, безопаснее и надежнее менеджера пакетов для JavaScript.

Вы можете добавить пряжу в проект, набрав:

yarn init

Это создаст файл package.json. Затем установите зависимости с помощью:

yarn install

Будет создана папка node_modules. Yarn также создаст файл с именем yarn.lock. Этот файл служит той же цели, что и package-lock.json, но вместо этого он построен с использованием детерминированного и надежного алгоритма, что приводит к последовательным сборкам.

Если вы начали проект с npm, вы можете легко перейти на пряжу. пряжа будет потреблять то же самое package.json. Подробнее см. Миграция с npm.

Тем не менее, npm улучшается с каждым новым выпуском, и в некоторых проектах все еще используется npm сверх пряжи.