Есть новая версия диспетчера пакетов JavaScript с открытым исходным кодом Yarn, запущенная в прошлом году Facebook, Google, Expononet и Tilde.
Yarn предназначен для замены диспетчера пакетов npm, который автоматически включается в Node.js. Разработчики Facebook, работающие над большими проектами, такими как React, обнаружили, что клиент npm не масштабируется под количество программистов и количество пакетов, поэтому объединились с Google, Exponent и Tilde и создали новый клиент npm — что и есть Yarn.
Первоначально Yarn был выпущен 11 месяцев назад, и сейчас его используют более 175 000 проектов на GitHub. Yarn также теперь отвечает за почти 3 миллиарда загрузок пакетов в месяц. В Facebook Yarn был принят во многих кодовых базах, включая основное приложение и веб-сайт Facebook, Instagram, Oculus и WhatsApp.
Преимущества Yarn, заключающиеся в более коротком времени установки, лучшей производительности и стабильности, позволили компаниям, включая Twitter, Microsoft, Kenzan и Sentry, использовать этот продукт.
Бурак Йигит Кая, Кристоф Наказава и Маэль Нисон из команды Yarn написали в блоге кода Facebook:
«Мы в восторге от принятия и участия сообщества. Когда мы запускали Yarn почти год назад, основное внимание уделялось стабильности, отказоустойчивости и производительности. Основываясь на основных принципах того, что сделало yarn успешной в первую очередь, выпуск 1.0 поставляется с много новых функций, которые, как мы надеемся, помогут сообществу Yarn двигаться быстрее и создавать отличные проекты ».
В новой версии Yarn добавлены рабочие области, поддержка автоматического объединения файлов LockFiles и выборочное разрешение версий.
Yarn Workspaces позволяет управлять кодом, используя подход монорепозитория для управления версиями. Разработчики говорят, что это упрощает совместное использование кода во всех проектах, избегая проблем с синхронизацией зависимостей. Рабочие области позволяют автоматически объединять все зависимости из нескольких файлов package.json и устанавливать их все за один раз. Yarn также создаст символические ссылки между всеми рабочими областями, которые зависят друг от друга.
Рабочие области уже используются некоторыми командами в Facebook и такими проектами, как Babel, в сообществе с открытым исходным кодом.
Автоматическое слияние устраняет проблему, когда в файле yarn.lock возник конфликт слияния, поскольку зависимости обновлялись в отдельных запросах на вытягивание один за другим. Если это произойдет, Yarn автоматически обработает разрешение конфликта за вас.
(щелкните в формате GIF, чтобы увеличить)
Выборочное разрешение версий упрощает обеспечение того, чтобы ваш код использовал самый последний пакет с исправлениями ошибок или критическими обновлениями безопасности, если ваш проект не является прямым потребителем этих зависимостей. До сих пор вам приходилось либо ждать, пока обновится ваша прямая зависимость, либо разветвлять ее и обновлять зависимости вручную до новой версии.
Yarn теперь позволяет определять поле разрешений в файле package.json проекта, которое инструктирует Yarn использовать определенные версии определенных подчиненных зависимостей, независимо от исходных шаблонов, установленных его зависимостями.