В этой статье мы сравним и исследуем различия между npm и Yarn — двумя наиболее известными менеджерами пакетов Node-js.

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

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

Что такое менеджер пакетов?

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

Что такое NPM и Yarn?

NPM расшифровывается как (Node Package Manager). Это менеджер пакетов по умолчанию для Node.js с инструментом CLI (интерфейс командной строки), который помогает устанавливать, управлять и удалять пакеты Node.js. Кроме того, он был выпущен еще в 2010 году, положив начало новой эре веб-разработки.

Пряжа известна как (Еще один переговорщик ресурсов). Пряжа была выпущена Facebook в 2016 году, это замена, придуманная для NPM. Намерение при разработке пряжи состояло в том, чтобы устранить недостатки NPM с точки зрения производительности и безопасности. Проще говоря, он создает более безопасный, стабильный и эффективный продукт.)

Установка

  • NPM устанавливается вместе с узлом автоматически, как указано выше.
npm -v
  • Напротив, Yarn необходимо установить явно.
npm install yarn -g

Зависимости

npm устанавливает пакеты зависимостей последовательно, один за другим, он устанавливает с помощью команды npm install.

Yarn использует команду yarn для установки зависимостей. Он устанавливает зависимости параллельно, позволяя добавлять несколько файлов одновременно, что является одной из причин, по которой он работает быстрее, чем npm.

Скорость и производительность

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

Говоря о скорости, у пряжи есть функция Нулевой установки, которая берет карту зависимостей из файла .pnp.cjs и использует ее для выполнения автономной установки зависимостей практически без задержек. в то время как он кэширует каждый пакет и сохраняет его на диск без подключения к Интернету, поскольку пакет устанавливается с диска в автономном режиме.

Как вы можете видеть выше, скорость переустановки при использовании Yarn была довольно высокой. Мы узнаем больше о функциях Yarn позже, давайте рассмотрим безопасность обоих менеджеров пакетов и метод, который они используют для повышения своей безопасности соответственно.

Сравнение безопасности

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

NPM имеет встроенную систему безопасности, так как он автоматически выдает предупреждение, если вы пытаетесь установить код с известной уязвимостью в системе безопасности. Мы можем проверить вручную, запустив npm audit для установленных пакетов в новой версии NPM, в то время как мы можем запустить npm audit fix, чтобы исправить уязвимости пакетов.

Кроме того, yarn обеспечивает проверку контрольной суммы, которая является проверенным методом быстрого определения идентичности двух файлов, не вдаваясь в детали конкретных файлов. (Контрольная сумма: строка букв и цифр, используемая для проверки данных на наличие ошибок, которые могут возникнуть при передаче или хранении.)

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

Сходства между Yarn и NPM: сравнение функций

Создание файла блокировки

В Yarn зависимости будут установлены автоматически путем создания файла блокировки с именем yarn.lock, который сохраняет точный список зависимостей, используемых для проекта. В то время как NPM создает версию файла блокировки с именем package-lock.json. Однако этот файл блокировки также позволяет пользователям переносить данные версии из NPM в Yarn, поскольку package-lock.json также поддерживается Yarn.

Удаленные сценарии

  • И NPM, и Yarn позволяют запускать скрипты удаленно.

Использование рабочих областей

NPM и Yarn поддерживают рабочие пространства, что позволяет использовать один репозиторий для управления зависимостями для нескольких проектов. Например, моно-репо.

Эксклюзивные возможности Yarn:

Ноль установок

  • Как мы упоминали в параграфе о скорости и производительности, нулевая установка с использованием файла .pnp.cjs для сопоставления пакетов, хранящихся в автономном кеше, что позволяет нам получать доступ и устанавливать пакеты практически без задержки, и это связано с внедрением Plug’nPlay.

Подключи и играй

  • yarn создает один файл .pnp.cjs, который сопоставляет пакеты с их расположением на диске и со списком зависимостей без создания папки node_modules.

Проверка лицензии

  • Yarn имеет собственную встроенную проверку лицензий при загрузке и установке пакетов.

Преимущества и недостатки:

Пряжа

Преимущества

  • Более безопасный
  • Поддерживает такие функции, как нулевая установка, параллельная установка, Plug’nPlay
  • Большое активное сообщество пользователей

Недостатки

  • Не работает со старыми версиями Node.js (ниже версии 5).
  • проблемы с установкой нативных модулей

НПМ

Преимущества

  • Прост в использовании, особенно для пользователей старой версии.
  • Нет необходимости устанавливать дополнительные инструменты
  • оптимизированная локальная установка пакетов для экономии места на диске.

Недостатки

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

Заключение

Из этой статьи мы увидели важные менеджеры пакетов и функции, которые предоставляются соответственно. Это очень полезные инструменты для обеспечения контроля над зависимостями нашего проекта. Однако в настоящее время эти два менеджера пакетов ближе друг к другу с точки зрения функциональных возможностей.

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

Хотите подключиться?

Эта статья написана Ханом Шенгом, техническим руководителем компании Arkmind, Малайзия. Он увлечен вещами, связанными с дизайном программного обеспечения/архитектурой, компьютерным зрением, а также периферийными устройствами. Он создал несколько веб-/мобильных приложений на основе искусственного интеллекта, чтобы помочь клиентам решать реальные проблемы. Не стесняйтесь читать о нем через его профиль Github.