Когда использовать пряжу над НПМ? В чем же разница?


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

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

3 53

3 ответа:

обновление: март 2018 (немного поздно...)

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

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

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

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


Оригинал

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

в основном:

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

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

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

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

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

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

С самого начала, пряжа lockfile гарантирует, что неоднократно работает yarn в том же репозитории приводит к тем же пакетам.

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

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

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

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

немного более длинная версия из проекта:

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

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

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

и README.md:

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

при установке пакета с помощью Yarn (с помощью yarn add packagename), это помещает пакет на диске. Во время следующей установки этот пакет будет использоваться вместо отправки HTTP-запроса для получения tarball из реестра.

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

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

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

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

используйте PNPM

преимущества PNPM over Yarn и NPM

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

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

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

npm install -g pnpm

теперь установите пакет

pnpm install -g typescript // or your desired package

Регистрация ибо

Benchmark

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