Yarn что это за программа
6 качеств, благодаря которым Yarn является лучшим менеджером пакетов для JavaScript
Russian (Pусский) translation by AlexBioJS (you can also view the original English article)
1. Скорость
Одним из достижений Yarn является его скорость работы по сравнению со стандартным клиентом npm. Но насколько он быстр? Недавно проведенное эталонное тестирование показало, что Yarn был в два-три раза быстрее npm. В этом тесте измерялось время установки React, Angular 2 и Ember. Это весьма надежная проверка менеджера пакетов, поскольку каждый из этих фреймворков нуждается во множестве зависимостей и содержит большую долю зависимостей реальных веб-приложений.
Давайте добавим еще одно значение и самостоятельно протестируем скорость путем установки модуля create-react-app при помощи yarn и npm. Ниже приведен результат установки с использованием yarn:
Вот результат установки с использованием npm:
Да. Этот результат бесспорно согласуется с другими сообщениями о значительном преимуществе yarn в скорости. Yarn установил модули за 2.59 секунд, тогда как npm потребовалось 9.422 секунд. Yarn был быстрее в 3.63 раза.
2. Надежность установок
Также yarn может похвастаться более надежными установками, чем npm. Когда установка считается ненадежной? Если при последующих установках происходит сбой или получается другой результат, то установка является ненадежной. Это может происходить по двум причинам:
Yarn справляется с обоими проблемами.
Офлайн кэш
Yarn использует глобальный офлайн кэш для сохранения пакетов, которые вы однажды установили, поэтому при установках новых версий используется кэшированная версия и достигается устойчивость к периодическим сбоям компьютерной сети. Вы можете узнать о расположении кэша yarn у вас при помощи команды:
Вот первые пять пакетов моего офлайн кэша:
Yarn способен на большее. У него может быть полное офлайн зеркало (* копия), которое будет использоваться обновлёнными версиями yarn.
Файл yarn.lock
Файл yarn.lock (* файл для блокировки ресурсов yarn) обновляется каждый раз, когда вы добавляете или обновляете версию пакета. В нем определяется, главным образом, точная версия каждого пакета, которая может быть указана в package.json при помощи частичного определения версии (например, указаны только главный и второстепенный номера версии), и его зависимостей.
Ниже приводится начало типичного файла yarn.lock. Вы можете увидеть версию такую, как она указана в package.json, например, «abbrev@1», и точно определенную версию «1.1.0».
Но почему?
Также yarn предоставляет вам команду yarn why для объяснения причины установки определенного пакета в вашем проекте:
3. Возможность проверки лицензий
4. Совместимость с npm и Bower
Yarn полностью совместим с npm, поскольку является просто другим клиентом, который работает с реестрами npm. В самом начале развития Yarn поддерживал Bower, однако немного спустя было принято решение прекратить поддержку Bower.
Основной причиной была не очень хорошая совместимость с Bower. При этом освобождалась папка bower_components или не доставлялся ни один пакет в новом проекте. Однако другой причиной является то, что команда Yarn не хотела поддерживать разделение в области управления пакетами и, наоборот, предпочитала переключение всех на npm.
Если вы заинтересованы в использовании Bower и не хотели бы переходить на другой менеджер пакетов прямо сейчас, вы по-прежнему можете использовать Yarn, однако, добавьте следующий фрагмент кода в ваш файл package.json.
5. Наличие нескольких реестров
Yarn может работать с несколькими типами реестров. Если вы просто добавляете пакет, то, по умолчанию, Yarn будет использовать свой реестр npm (который не является стандартным реестром npm). Однако, Yarn также может добавлять пакеты из файлов, удаленных tar-архивов с исходным кодом или удаленных репозиториев git (* система контроля версий).
Чтобы посмотреть текущий сконфигурированный реестр npm, выполните:
Для того чтобы установить другой тип реестра, используйте: yarn config set registry
Для добавления пакетов из разных источников используйте следующие команды для добавления:
6. Эмодзи «рулят»!
Одним людям нравятся эмодзи, другим нет. Изначально Yarn отображал эмодзи автоматически, однако только на операционной системе Mac OS X. В результате на Yarn посыпались камни с двух сторон: ненавистники эмодзи были огорчены тем, что их консоль пестрила эмодзи, в то время как любители эмодзи были расстроены отсутствием эмодзи на Windows и Linux.
Facebook и Google выпустили Yarn, новый менеджер пакетов для JavaScript
Вчера вечером Facebook официально анонсировала новый пакетный менеджер для JavaScript под названием Yarn. На одной из стадии разработки к проекту подключились компании Google, Exponent и Tilde.
«Самый популярный менеджер пакетов JavaScript — это NPM. Он обеспечивает доступ более чем к 300 тысячам пакетов. Используют его более 5 миллионов разработчиков, а ежемесячно к нему обращаются для загрузки более 5 миллиардов раз.
Мы успешно использовали NPM в Facebook в течение многих лет, но так как объем нашего кода и число разработчиков выросло, мы столкнулись с проблемами последовательности, безопасности и производительности. После попытки решить все эти вопросы, мы пришли к намерению создать собственное решение, чтобы обеспечить надежность управления разработкой. Итогом этой работы стал Yarn — быстрая, надежная и безопасная альтернатива клиенту NPM», — говорится в официальном блоге Facebook о новинке.
Разработчики Facebook утверждают, что Yarn все так же позволяет получить доступ к пакетам NPM, но при этом позволяет быстрее и последовательно управлять зависимостями между машинами, или работать в защищенной среде в автономном режиме. Это, по мнению создателей Yarn, позволит разработчикам сосредоточиться на том, что на самом деле важно — на создании новых продуктов и функций. Вот перечень основных отличительных особенностей Yarn:
Разработчики оригинального NPM — коммерческая организация, которая была в курсе создания и скорого выхода в свет конкурента. Однако, бизнес-модель проекта построена не вокруг клиента, а вокруг каталога, который также используется и Yarn. Поэтому новинка от Facebook и Google не представляет для них большой угрозы.
Команда Facebook решила вынести свою разработку за пределы внутреннего репозитория компании и выложила Yarn на GitHub, где можно ознакомиться с проектом и принять участие в разработке.
Yarn или npm: все, что вам нужно знать о них
Yarn это новый менеджер пакетов, совместно созданный Facebook, Google, Exponent и Tilde. Как можно прочитать в официальной документации, его целью является решение целого ряда проблем, с которыми столкнулись разработчики при использовании npm, а именно:
Но не тревожьтесь. Это не попытка полностью заменить npm. Yarn это новый клиент командной строки, скачивающий модули из реестра npm. В самом реестре ничего не меняется — вы можете скачивать и публиковать модули также, как и прежде.
Должен ли теперь каждый срочно перейти на Yarn? Вполне возможно, что вы никогда не сталкивались с этими проблемами, используя npm. В этой статье мы сравним Yarn и npm, чтобы вы могли определиться, что лучше подходит для вас.
Yarn или npm: функциональные отличия
На первый взгляд Yarn и npm кажутся похожими. Но если заглянуть под капот, мы увидим отличия Yarn.
Файл yarn.lock
В идеальном мире семантического версионирования, релизы с патчами не содержат коренных изменений. Но, к сожалению, в реальности это не всегда верно. Стратегия, выбранная npm может привести к тому, что на двух машинах с идентичными файлами package.json будут установлены различные версии пакетов, что может привести к появлению багов.
Параллельная установка
Независимо от того, устанавливается ли пакет с помощью npm или Yarn, при этом решается серия задач. В npm эти задачи выполняются последовательно и отдельно для каждого пакета, это значит, что пока пакет не установлен полностью, следующий пакет будет ждать. В Yarn эти операции выполняются параллельно, что улучшает производительность.
Для сравнения я установил пакет express с помощью npm и Yarn, не используя кэш, файлы shrinkwrap или lock; всего в установке 42 файла.
Я не поверил своим глазам. Повторение дало такие же результаты. Затем я установил gulp со 195 зависимостями.
Кажется, что разница зависит от количества устанавливаемых пакетов, в любом случае Yarn быстрее.
Консольные логи
По умолчанию npm выводит очень много. Например, он рекурсивно перечисляет все установленные пакеты при выполнении npm install
. Yarn с другой стороны, обходится минимумом информации и использует эмодзи (если у вас mac).
Yarn или npm: различия в интерфейсе командной строки
Кроме функциональных отличий, в Yarn также отличаются команды. Некоторые команды npm удалены, некоторые модифицированы, а пара интересных команд добавлена.
yarn global
yarn install
yarn add [–dev]
Аналогично npm install
yarn licenses [ls|generate-disclaimer]
На момент написания в npm нет эквивалента этой команды. Yarn licenses ls выводит список лицензий всех установленных в проекте пакетов, а yarn licenses generate-disclaimer генерирует дисклеймер, содержащий текст всех лицензий всех пакетов в проекте. Некоторые лицензии требуют включать текст лицензии в ваш проект, поэтому этот инструмент весьма полезен.
yarn why
Эта команда смотрит в граф зависимостей и выясняет, почему указанный пакет установлен в вашем проекте. Возможно, вы сами добавили его, а, может, это зависимость установленного вами пакета. Команда yarn why помогает вам с этим разобраться.
yarn upgrade
Эту команду не надо путать с npm update, обновляющей пакеты до самой свежей версии.
yarn generate-lock-entry
Стабильность и надежность
А что, если шумиха вокруг Yarn преждевременна? В первый же день релиза появилось много сообщений о проблемах, но темпы решения проблем поражают. Это показывает серьезную работу по обнаружению и исправлению багов. Если смотреть на количество и типы проблем, Yarn кажется стабильным для большинства пользователей, но он может не подойти для каких-то отдельных случаев.
Учтите, что несмотря на то, что пакетный менеджер может быть очень важен для вашего проекта, это всего лишь пакетный менеджер. Если возникают проблемы, то переустановка пакетов не должна быть сложной, также как и возврат к npm.
Перспективы
Возможно, вы опасаетесь повторения истории с Node.js и io.js. Напомню, что io.js был форком Node.js, созданным несколькими основными разработчиками после разногласий по поводу управления проектом. Меньше, чем через год, обе команды пришли к соглашению, io.js был слит с Node.js и прекращен. Независимо от того, кто был прав, это обогатило Node.js новыми функциями.
Я вижу схожие паттерны между npm и Yarn. Хотя Yarn это не форк, он исправляет некоторые из недостатков npm. Разве будет плохо, если npm учтет это и попросит Facebook, Google и остальных разработчиков Yarn улучшить npm? Хотя об этом слишком рано пока говорить, но я надеюсь, что так и произойдет.
В любом случае, будущее Yarn выглядит светлым. Сообщество проявляет интерес к появлению нового пакетного менеджера. К сожалению, пока отсутствует дорожная карта проекта, поэтому я не знаю, какие сюрпризы Yarn готовит для нас.
Заключение
Я мог бы однозначно рекомендовать попробовать Yarn в каком-нибудь проекте, раньше или позже. Если вы осторожны в установке и использовании новых программ, подождите пару месяцев. В конце концов, npm проверен в боевых условиях, а в мире разработки программного обеспечения это немаловажно.
Если же вы замечали, что вам приходиться ждать окончания установки пакетов npm, то вам самое время ознакомиться с руководством по переходу на Yarn.
Yarn 2 — Устанавливаем и разбираемся
Знакомство
Yarn 2 (Berry) — это новый выпуск революционного и хорошо зарекомендовавшего себя менеджера пакетов Yarn, включающий в себя такие особенности, как: Plug’n’Play, возможность расширения модульного API, оффлайн-кэш и улучшенную поддержку рабочих пространств.
Plug’n’Play
В новой документации Yarn подробно рассказывается о недостатках node_modules, как структуры папок, и объясняется, почему необходим новый взгляд на управление зависимостями.
Монорепозитории
Не зависимо от того, являетесь бы поклонником монорепозиториев или нет, чтобы обеспечить качественное управление большими проектами и сложными рабочими процессами, потребуется хороший набор инструментов.
Популярным рецептом настойки JavaScript монорепозитория является комбинация рабочих пространств Yarn и использование Lerna в качестве менеджера проектов.
Хорошая новость заключается в том, что теперь Yarn может одновременно выполнять функции как менеджера пакетов, так и менеджера проектов, пытаясь обеспечить положительный опыт работы в этом аспекте.
Модульная архитектура, плагины
Сделав важный шаг вперед, Yarn 2 был переработан в пользу нового модульного API, расширяемого при помощью плагинов. В настоящее время большинство функций уже реализовано с их помощью — даже yarn add и yarn install являются предустановленными плагинами!
Как начать работу?
Установка
Yarn придерживается стратегии глобальной установки первой версии, а уже затем переключения на вторую для конкретного проекта.
Сначала установим глобальный Yarn, который мы будем использовать для создания локальных экземпляров:
“Berry” — кодовое имя релизной ветки Yarn 2.
Изменим версию Yarn конкретно для каталога my-app :
После выполнения данной команды установка будет завершена, и можно переходить к установке зависимостей!
Добавление зависимостей
Общие команды управления остались теми же, что и в предыдущих версиях:
yarn init — инициализация проекта
[—dev] — добавление пакета
Также, вы можете увидеть некоторые изменения консольного интерфейса в новой версии Yarn:
каждый набор связанных задач, выполняемых в процессе установки, сгруппирован;
почти все сообщения имеют собственные коды ошибок, которые можно найти в документации;
цвета теперь используются только для обозначения важных частей каждого сообщения.
Установка React.js с Yarn-плагином TypeScript
Далеко не все пакеты поставляются с собственными определениями типов, но уже нет поводов для волнения, ведь там, где их нет, Yarn возьмёт работу на себя.
Перед выполнением операцией ниже, следует установить Yarn Berry для рабочей директории и убрать детей от экрана.
Инициализируем package.json и установим плагин TypeScript:
Проведем установку библиотеки React:
Зависимости @types/ были успешно установлены!
package.json
Что в итоге
Ветка Yarn 1.x (Classic) уже официально перешла в статус поддержки, предполагающей только исправление уязвимостей.
Для React Native всё таки придётся подключать node modules.
Если Yarn не подружится с вашей IDE, нужно будет кое-что установить. Не скучайте!
Yarn что это за программа
Yarn — это альтернативный npm-клиент для работы в качестве пакетного менеджера JavaScript, совместно созданный Facebook, Google, Exponent и Tilde. Этот менеджер пакетов ускоряет сборку пакетов и делает её более безопасной.
NPM в файле package.json фиксирует не конкретную версию используемых пакетов, а их диапазон. Таким образом, стратегия стандартного клиента npm может привести к тому, что на основе идентичных файлов package.json в разное время будут установлены различные версии пакетов. Yarn решает эту проблему, так как позволяет точно зафиксировать зависимости в файле yarn.lock
Последовательная установка пакетов через npm заметно замедляет работу. Yarn же поддерживает параллельную установку, что обычно в несколько раз быстрее.
По сути, Yarn — отличная замена npm. В своей работе мы используем именно его.
Node Package Manager (npm) — менеджер пакетов, входящий в состав Node.js.
Инфраструктура пакетного менеджера состоит из консольного клиента (npm) и доступной онлайн базы данных публичных и приватных пакетов — npm registry. Клиент позволяет скачивать пакеты из реестра и устанавливать их. Для хранения списка используемых в проекте пакетов используется файл package.json
Язык программирования JavaScript
JavaScript (JS) — язык программирования, который наиболее широко JS используется в браузерах как язык сценариев для придания интерактивности веб-страницам.
Также JS может использоваться для бэкенд-разработки, для разработки мобильных приложений и для других задач. В языке отсутствуют стандартная библиотека, стандартные интерфейсы к веб-серверам и базам данных, а также нет встроенной системы управления пакетами. Но всё это решается подключением сторонних библиотек и использованием дополнительного ПО.