Yarn - это новая программа командной строки для установки пакетов JavaScript из npm и Bower. Yarn решает многие проблемы, которые у нас были с npm, поэтому мы были рады стать одним из первых пользователей и участников Yarn. Некоторые решения, которые были приняты при написании Yarn, отличаются от решений, принятых в npm:

  • Последовательность: поведение Yarn по умолчанию позволяет всем в вашей команде использовать одни и те же версии одних и тех же пакетов npm с помощью файла блокировки. Это значительно снижает количество ошибок, которые возникают на компьютере одного человека, но не на компьютере другого.
  • Универсальные архивы: Yarn имеет возможность архивировать ваши пакеты npm в файлы tar.gz, которые вы можете передать в систему контроля версий и поделиться со своей командой. Эти пакеты npm исключают артефакты сборки, поэтому они работают с разными версиями Node или разными операционными системами.
  • Офлайн: это означает, что вы можете устанавливать пакеты npm без подключения к Интернету с помощью Yarn. Это особенно полезно для систем CI; они больше не полагаются на интернет-соединение и реестр npm, и ваши тесты пройдут, даже когда npm выйдет из строя.
  • Скорость: алгоритм Yarn по выбору пакетов для установки и их загрузке намного на практике быстрее, чем у npm! В большинстве случаев Пряжа в 2-7 раз быстрее, чем npm. Автономная установка с использованием архивных пакетов также увеличивает скорость Yarn, ускоряя выполнение тестов в ваших системах CI.

Почему новый проект?

Эти функции отлично подходят для наших рабочих процессов в Exponent code base, и мы рады, что появился Yarn. Один вопрос, который я пару раз встречал в Twitter и Hacker News: Почему разработчики Yarn вместо этого не работали над npm? Вот некоторые из причин, которые приходят на ум:

  • Exponent и Facebook независимо друг от друга пытались добавить инструменты и инфраструктуру, чтобы улучшить то, как мы используем npm, но это не работало так, как мы хотели. Разработчики Yarn в Facebook рассказывают о попытках масштабирования клиента npm в своем блоге.
  • Многие функции Yarn не являются расширениями существующих функций npm, которые можно добавлять постепенно. Это серьезные изменения в способах загрузки и установки пакетов.
  • Некоторые из основных дизайнерских решений Yarn, в том числе те, о которых я говорил выше, отличаются от решений npm. Обычно сложно изменить основные дизайнерские решения проекта, если вы не являетесь его основным участником, и разработчики Yarn не были в этом месте.
  • Пряжа меняет рабочие процессы разработчика. Например, вместо того, чтобы думать об установке пакетов в папку node_modules, как в случае с npm, с помощью Yarn вы добавляете пакеты в свой проект. См. Подробности в документации Yarn по управлению зависимостями.

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

Показатель + пряжа

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