Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65

Статья опубликована в рамках: LI Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 30 марта 2017 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Котин А.Н., Михайлова М.В. ВЫБОР ПАКЕТНОГО МЕНЕДЖЕРА. YARN ИЛИ NPM // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LI междунар. студ. науч.-практ. конф. № 3(50). URL: https://sibac.info/archive/technic/3(50).pdf (дата обращения: 23.09.2021)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ВЫБОР ПАКЕТНОГО МЕНЕДЖЕРА. YARN ИЛИ NPM

Котин Андрей Николаевич

студент, Самарский государственный архитектурно-строительный институт,

Россия, Самара

Михайлова Мария Владимировна

магистрант, Самарский государственный архитектурно-строительный институт,

Россия, Самара

Научный руководитель Тимофеев Александр Вадимович

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

Россия, Самара

Научный руководитель Шаврин Вадим Юрьевич

старший преподаватель кафедры информационных и развивающихся образовательных систем и технологий, Самарский государственный архитектурно-строительный институт,

Россия, Самара

Yarn это новый менеджер пакетов, совместно созданный Facebook, Google, Exponent и Tilde. Его целью является решение целого ряда проблем, с которыми столкнулись разработчики при использовании npm, а именно:

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

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

Yarn или npm: функциональные отличия

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

Файл yarn.lock

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

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

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

В npm команда npm shrinkwrap так же генерирует файл блокировки, а команда npm install считывает его до чтения package.json, также как Yarn сначала читает yarn.lock. Разница состоит в том, что Yarn всегда автоматически обновляет yarn.lock, а в npm это надо делать вручную.

Параллельная установка

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

Для сравнения установлены пакеты express с помощью npm и Yarn, не используя кэш, файлы shrinkwrap или lock, всего в установке 42 файла.

npm: 9 секунд

Yarn: 1.37 секунд

Разница в скорости составляет более чем 6 раз! Затем был установлен gulp со 195 зависимостями.

npm: 11 секунд

Yarn: 7.81 секунд

Разница в скорости зависит от количества устанавливаемых пакетов, в любом случае Yarn быстрее.

Консольные логи

По умолчанию npm выводит очень много. Например, он рекурсивно перечисляет все установленные пакеты при выполнении npm install <package>. Yarn с другой стороны, обходится минимумом информации.

Yarn или npm: различия в интерфейсе командной строки

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

yarn global

В отличие от npm, где глобальные операции выполняются за счет опции -g или --global, команды Yarn нуждаются в префиксе global. Также как и в npm, специфические для проекта зависимости глобально не устанавливаются.

Префикс global работает только с командами yarn add, yarn bin, yarn ls и yarn remove. За исключением yarn add, все эти команды идентичны своим эквивалентам в npm.

Документация global.

yarn install

Команда npm install устанавливает все зависимости из файла package.json и позволяет вам добавлять новые пакеты. Команда yarn install только устанавливает зависимости, перечисленные в файле yarn.lock или package.json, именно в таком порядке.

Стабильность и надежность

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

Перспективы

Паттерны между npm и Yarn схожи. Хотя Yarn это не форк, он исправляет некоторые из недостатков npm. Будущее Yarn выглядит светлым. Сообщество проявляет интерес к появлению нового пакетного менеджера. К сожалению, пока отсутствует дорожная карта проекта, поэтому не понятно, какие сюрпризы Yarn готовит для нас.

Заключение

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

 

Список литературы:

  1. Документация технологии NPM. [электронный ресурс] — Режим доступа. — URL: https://docs.npmjs.com/getting-started/what-is-npm (дата обращения 16.02.2017).
  2. Документация технологии Yarn. [электронный ресурс] — Режим доступа. — URL: https://yarnpkg.com/en/docs (дата обращения 16.02.2017).
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом