Yarn или npm: всё, что вам нужно знать

Yarn или npm Изучение

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

Изложение основ

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

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

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

На самом деле npm включает в себя три вещи:

  • сайт для управления различными аспектами вашего опыта НОГО
  • реестр для доступа к обширным базам данных общих пакетов JavaScript
  • интерфейс командной строки (CLI), для взаимодействия с НПМ через терминал

Однако, когда большинство людей говорят о npm, они обычно имеют в виду последнее — инструмент CLI. Он поставляется как менеджер пакетов по умолчанию с каждой новой установкой Node. Это означает, что вы можете сразу начать пользоваться им.

Если вы хотите более глубоко погрузиться в работу с npm, обратитесь к нашему Руководству по Node Package Manager.

Пряжа означает еще один переговорщик ресурсов. Менеджер пакетов Yarn — альтернатива npm, выпущенная Facebook в октябре 2016 года. Первоначальная цель Yarn заключалась в устранении недостатков npm, таких как проблемы с производительностью и безопасностью. Yarn был быстро позиционирован как безопасный, быстрый и надежный инструмент управления зависимостями JavaScript.

Но команда npm усвоила урок и быстро заполнила пробелы в npm, реализовав недостающие функции.

Давайте быстро отправимся в путешествие во времени, чтобы увидеть общую картину:

  • 2010: выпуск npm с поддержкой Node.
  • 2016: Выпущена Пряжа. Показывает гораздо большую производительность, чем npm. Он также создает yarn.lockфайл, который делает совместное использование и точное копирование репозиториев намного более простым и предсказуемым.
  • 2017: выпущен npm 5. Он предлагает автоматическое создание package-lock.jsonфайла в ответ на yarn.lock.
  • 2018: выпуск npm 6 с улучшенной безопасностью. Теперь npm проверяет уязвимости безопасности перед установкой зависимостей.
  • 2020: Выпущены пряжа 2 и npm 7. Оба пакета содержат новые замечательные функции, как мы увидим позже в этом руководстве.
  • 2021: Выпущена пряжа 3 с различными улучшениями.

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

В оставшейся части этого урока мы исследуем основные сходства и различия между npm и Yarn.

Yarn или npm: сравнение установок

Мы начнем наше сравнительное исследование с процесса установки как для npm, так и для Yarn.

Установка самих менеджеров пакетов

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

Напротив, Yarn необходимо установить явно. Во-первых, нам нужно установить Yarn глобально:

npm install -g yarn

Затем мы можем использовать его для каждого проекта, установив желаемую версию внутри нашего проекта. Мы делаем это, выполняя yarn set versionкоманду в корневом каталоге проекта:

yarn set version berry

В данном случае berryэто версия, которую мы хотим установить.

Читайте также:  Как узнать, является ли IP-адрес статическим или динамическим в Linux

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

yarn set version latest

С Yarn мы можем использовать разные версии для каждого проекта.

Чтобы сделать то же самое с npm, вам потребуется установить nvm (Node Version Manager). Вот как установить несколько версий Node с помощью nvm.

Установка зависимостей проекта

Теперь посмотрим, как устанавливаются зависимости проекта.

При запуске npm installзависимости устанавливаются последовательно, одна за другой. Журналы вывода в терминале информативны, но их трудно читать.

Чтобы установить пакеты с помощью Yarn, мы запускаем yarnкоманду. Yarn устанавливает пакеты параллельно, что является одной из причин, по которой он работает быстрее, чем npm. Если вы используете Yarn 1, вы увидите, что журналы вывода пряжи чистые, визуально различимые и короткие. Они также упорядочены в виде дерева для облегчения понимания. Но это изменилось в версиях 2 и 3, где журналы не такие интуитивно понятные и удобочитаемые.

До сих пор мы видели, что npm и Yarn имеют разные команды для установки пакетов. В следующем разделе мы рассмотрим другие команды.

Сравнение команд npm и Yarn

npm и Yarn имеют много общих команд, но есть также много неидентичных команд. Давайте сначала рассмотрим некоторые из идентичных команд:

  • npm init| yarn init: создать новый пакет
  • npm run| yarn run: запустить сценарий, определенный вpackage.json
  • npm test| yarn test: проверить пакет
  • npm publish| yarn publish: опубликовать пакет
  • npm cache clean| yarn cache clean: удалить все данные из папки кеша

Эти команды упрощают переключение между двумя менеджерами, но есть некоторые неидентичные команды, которые могут вызвать путаницу. Посмотрим, что они есть в следующем списке:

  • npm install| yarn: установить зависимости
  • npm install [package]| yarn add [package]: установить пакет
  • npm install —save-dev [package]| yarn add — -dev [package]: установить пакет как зависимость разработки
  • npm uninstall [package]| yarn remove [package]: удалить пакет
  • npm uninstall —save-dev [package]| yarn remove [package]: удалить пакет зависимостей разработки
  • npm update| yarn upgrade: обновить зависимости
  • npm update [package]| yarn upgrade [package]: обновить пакет

В Yarn также есть несколько уникальных команд, у которых нет эквивалентов в npm. Например, whyкоманда отображает причину, по которой нужен пакет: это может быть зависимость, собственный модуль или зависимость проекта.

Yarn или npm: скорость и производительность

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

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

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

Yarn или npm: сравнение безопасности

Одна из основных критических замечаний к npm касается безопасности. Предыдущие версии npm имеют несколько серьезных уязвимостей.

Начиная с версии 6, npm проверяет пакеты во время установки и сообщает вам, обнаружены ли какие-либо уязвимости. Мы можем выполнить эту проверку вручную, запустив проверку npm auditустановленных пакетов. Если будут обнаружены какие-либо уязвимости, npm даст нам рекомендации по безопасности.

Начиная с версии 6, npm проверяет пакеты во время

Как вы можете видеть на скриншоте выше, мы можем запустить npm audit fixисправление уязвимостей пакетов, и деревья зависимостей будут исправлены, если это возможно.

Читайте также:  LeetCode - лучший способ подготовиться к собеседованию?

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

Yarn или npm: сравнение характеристик

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

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

В package.jsonфайле, в котором npm и Yarn отслеживают зависимости проекта, номера версий не всегда точны. Вместо этого вы можете определить ряд версий. Таким образом, вы можете выбрать конкретную основную и вспомогательную версию пакета, но разрешить npm установить последний патч, который может исправить некоторые ошибки.

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

Чтобы избежать несовпадения версий пакетов, точная установленная версия фиксируется в файле блокировки пакета. Каждый раз, когда модуль добавляется, НПМ и пряжа создать (или обновление) а package-lock.jsonи yarn.lockфайл соответственно. Таким образом, вы можете гарантировать, что другой компьютер установит точно такой же пакет, но при этом будет иметь диапазон допустимых версий, определенных в package.json.

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

Рабочие области позволяют использовать один монорепозиторий для управления зависимостями в нескольких проектах. Это означает, что у вас есть один корневой пакет верхнего уровня, который имеет несколько дочерних пакетов, называемых рабочими областями.

Удаленный запуск скриптов

Команда npxиспользуется для запуска скриптов из./node_modules/.bin. Это также позволяет вам выполнять пакеты из реестра npm, не устанавливая их в зависимости вашего проекта. Например, вы можете создать новое приложение React, выполнив следующее:

npx create-react-app my-app

В Yarn вы можете добиться того же результата, используя эквивалентную dlxкоманду:

yarn dlx create-react-app my-app

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

Zero installs

При нулевых установках кеш сохраняется в каталоге вашего проекта в.yarnпапке. Когда вы используете такие команды, как yarnили yarn add , Yarn создаст.pnp.cjsфайл. Этот файл содержит иерархию зависимостей, используемую Node для загрузки пакетов вашего проекта. Таким образом, вы можете получить к ним доступ практически в нулевое время.

Plug’n’Play

Plug’n’Play — это альтернативная стратегия установки. Вместо того, чтобы генерировать node_modulesкаталог и оставлять разрешение на Node, Yarn генерирует единственный.pnp.cjsфайл, который сопоставляет пакеты с их местоположением на диске и их списком зависимостей. Эта функция может привести к более быстрому запуску проекта, более оптимизированному дереву зависимостей, более быстрой установке и, конечно же, устраняет необходимость в node_modulesпапке.

Лицензии

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

Пряжа против npm: какой диспетчер пакетов выбрать

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

В качестве общего руководства позвольте мне в заключение дать следующий совет:

Выберите npm, если вас устраивает текущий рабочий процесс, вы не хотите устанавливать дополнительный инструмент и у вас мало места на диске.
Выберите Yarn, если вам нужны отличные функции, такие как Plug’n’Play, вам нужны некоторые функции, которых нет в npm, и у вас достаточно места на диске.

Если вам все еще трудно принять четкое решение между npm и Yarn, вы можете проверить pnpm, который пытается объединить лучшее от обоих менеджеров пакетов и является третьей большой рыбой в пуле управления пакетами.

Yarn или npm: заключение

Мы увидели, насколько важны менеджеры пакетов для современной веб-разработки, и сравнили двух самых популярных конкурентов на рынке. У них обоих есть свои преимущества и недостатки, и для того, чтобы выбрать лучшее, вам необходимо иметь четкое представление о ваших требованиях. Лучший способ решить, что вам больше подходит, — это попробовать их оба и посмотреть, какой из них работает лучше.

И, наконец, не зацикливайтесь на этом. Просто выберите одно и переходите к самому интересному: созданию отличных приложений!

Оцените статью
bestprogrammer.ru
Добавить комментарий