Facebook представил Yarn, новый пакетный менеджер для JavaScript

1 год ago admin 0

Компания Facebook представила новый пакетный менедржер Yarn, ориентированный на управления зависимостями в проектах на языке JavaScript. Отмечается, что при разработке Yarn использован опыт и лучшие идеи менеджеров зависимостей Bundler, Cargo и npm, при этом основное внимание уделено производительности, надёжности и безопасности. Исходные тексты распространяются под лицензией BSD. Сборки подготовлены для macOS, Windows и Linux.

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

Основные возможности:

  • Режим работы в offline: если пакет устаналивался ранее, то его повторная установка может быть осуществлена без наличия сетевого соединения;
  • Идентичность зависимостей: на любых системах, независимо от порядка установки, будет установлен точно такой же набор зависимостей;
  • Оптимизация сетевого взаимодействия: применяются эффективные алгоритмы группировки пакетов в очередь и обеспечения максимальной пропускной способности при загрузке данных;
  • Стойкость к проблемам в сети: сбой выполнения одного запроса не приводит к прерыванию установки, в случае проблем запрос будет повторён;
  • Возможность комбинирования реестров: можно устанавливать любые пакеты из репозиториев npm и Bower;
  • Плоский режим: для избежания появления дубликатов в Yarn предусмотрен анализ заменяемости версий зависимостей — при несовпадении версии, определяется возможность использования уже установленной версии;
  • Возможность создания фильтров лицензий, допускающих для установки только модули с заданными лицензиями;
  • Наличие стабильного JavaScript API и абстрактной модели журналирования для упрощения интеграции с различными сборочными инструментариями;
  • Минималистичный интерфейс командной строки.


Source: pirates.in.ua