В чем разница между Yarn и NPM? На момент написания этого вопроса я могу найти только некоторые статьи в Интернете показывая то , что Пряжа из будут сброшены командой НПМ , как это .
Обладают ли они одинаковыми функциями (я знаю, что Yarn выполняет локальное кэширование и похоже, что вам нужно загрузить пакет только один раз), но есть ли какие-либо преимущества при переходе с NPM на Yarn?
javascript
npm
yarnpkg
Аша
источник
источник
Ответы:
ОБНОВЛЕНИЕ: март 2018 г. (немного поздно ...)
Начиная с версии 5,
npm
package-lock.json
файл блокировки, который фиксирует все ваше дерево зависимостей почти так же, как это делает пряжа (или любой другой) механизм блокировки,--save
теперь подразумевается дляnpm i
НПМ 5.7.0 дополнительно ввел в
npm ci
команду для более быстрой установки зависимостей в среде непрерывной интеграции лишь установкой пакетов найти вpackage-lock.json
(сообщение об ошибке , еслиpackage-lock.json
иpackage.json
не синхронизированы).Лично я до сих пор пользуюсь
npm
.Оригинал
Я не хочу цитировать прямо из документов, но они отлично объясняют почему, достаточно кратко, чтобы я не видел, как дальше резюмировать идеи.
Во многом:
Вы всегда знаете, что получаете одно и то же на каждой машине разработки.
Параллелирует операции, которых
npm
нет, иЭто позволяет более эффективно использовать сеть.
Он также может более эффективно использовать другие системные ресурсы (например, ОЗУ) .
Каков производственный опыт людей с этим? Кто знает, для широкой публики это младенец.
TL; DR от Иегуды Каца :
Хорошая запись в блоге
« Шпаргалка NPM vs Yarn », автор: Гант Лаборде
Чуть более длинная версия из проекта :
И с README.md :
источник
--flat
опция, которая заставляет реальную плоскую структуру, в которой разрешена установка только одной версии каждой зависимости, но каково поведение по умолчанию в этом случае? Спасибо.install -g
.Что такое ПНФМ?
pnpm
использует жесткие ссылки и символические ссылки для сохранения одной версии модуля только один раз на диске. Например, при использовании npm или Yarn, если у вас есть 100 проектов, использующих одну и ту же версию lodash, у вас будет 100 копий lodash на диске. С pnpm lodash будет сохранен в одном месте на диске, а жесткая ссылка поместит его в node_modules, где он должен быть установлен.В результате вы экономите гигабайты места на диске и выполняете установку намного быстрее! Если вы хотите получить более подробную информацию об уникальной структуре node_modules, которую создает pnpm, и о том, почему она отлично работает с экосистемой Node.js, прочтите эту небольшую статью: Почему мы должны использовать pnpm?
Как установить ПНФМ?
Как установить пакет npm с помощью PNPM?
pnpm install -g typescript // or your desired package
Преимущества
PNPM
болееYarn
иNPM
Вот индикатор выполнения, показывающий время, затраченное на установку
NPM
,YARN
иPNPM
(чем короче, тем лучше)Нажмите, чтобы пройти полную проверку Benchmark
для получения дополнительной информации посетите https://www.npmjs.com/package/pnpm
источник
npm :
Пряжа :
источник
Когда вы устанавливаете пакет с помощью Yarn (используя yarn add packagename), он помещает пакет на ваш диск . Во время следующей установки этот пакет будет использоваться вместо отправки HTTP-запроса для получения архива из реестра.
Yarn поставляется с удобной программой проверки лицензий , которая может стать действительно мощной, если вам нужно проверить лицензии всех модулей, от которых вы зависите.
Если вы работаете над проприетарным программным обеспечением, не имеет значения, какое из них вы используете. С npm вы можете использовать npm-shrinkwrap.js, а yarn.lock - с Yarn.
Для получения дополнительной информации прочтите следующий блог
https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
источник
Пытаюсь дать лучший обзор новичкам.
npm исторически (2010 г.) был самым популярным менеджером пакетов для JavaScript. Если вы хотите использовать его для управления зависимостями вашего проекта, вы можете ввести следующую команду:
Это создаст
package.json
файл. Он содержит все зависимости проекта.затем
создаст каталог
node_modules
и загрузит в него зависимости (которые вы добавили вpackage.json
файл).Он также создаст
package-lock.json
файл. Этот файл используется для описания созданного дерева зависимостей. Это позволяет разработчикам устанавливать точно такие же зависимости. Например, вы можете представить, как разработчик обновляет зависимость до v2, а затем до v3, а другой напрямую обновляется до v3.npm устанавливает зависимости недетерминированным образом, что означает, что два разработчика могут иметь разные
node_modules
каталоги, что приводит к разному поведению . ** npm пострадал от плохой репутации, например, в феврале 2018 года: в версии 5.7.0 была обнаружена проблема, в которой запуск sudo npm в системах Linux изменял владельца системных файлов, что приводило к необратимому нарушению работы операционной системы.Чтобы решить эти и другие проблемы, Facebook представила новый менеджер пакетов (2016 г.): Пряжа быстрее, более надежно и более надежно менеджера пакетов для JavaScript.
Вы можете добавить Yarn в проект, набрав:
yarn init
Это создаст
package.json
файл. Затем установите зависимости с помощью:yarn install
Будет создана папка
node_modules
. Yarn также создаст файл с именемyarn.lock
. Этот файл служит той же цели, что и файл,package-lock.json
но вместо этого создается с использованием детерминированного и надежного алгоритма, что приводит к согласованным сборкам.Если вы начали проект с npm , вы можете легко перейти на Yarn . пряжа потребляет столько же
package.json
. Дополнительные сведения см. В разделе « Переход с npm» .Тем не менее, NPM был улучшен с каждыми новыми релизами и некоторые проекты все еще использует НПЙ над пряжей .
источник
Ответ @msanford охватывает почти все, однако мне не хватает части безопасности (известные уязвимости OWASP).
Пряжа
Вы можете проверить их с помощью
yarn audit
, но не можете исправить. Это все еще нерешенная проблема на GitHub ( https://github.com/yarnpkg/yarn/issues/7075 ).npm
Вы можете использовать
npm audit fix
, поэтому некоторые из них вы можете исправить самостоятельно.Оба они, т.е.
npm audit
&,yarn audit
имеют свои собственные инструменты непрерывной интеграции. Это соответственно https://github.com/IBM/audit-ci (используется, отлично работает!) И https://yarnpkg.com/package/audit-ci (не используется).источник