The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Facebook выпустил Yarn 1.0, пакетный менеджер для JavaScript "
Отправлено opennews, 07-Сен-17 22:45 
Спустя 11 месяцев после открытия кода Facebook представил (https://code.facebook.com/posts/274518539716230) первый стабильный релиз пакетного менеджера Yarn 1.0 (https://yarnpkg.com/), предназначенного для управления зависимостями в проектах на языке JavaScript и вобравшего в себя опыт и лучшие идеи менеджеров зависимостей Bundler (https://github.com/bundler/bundler), Cargo (https://github.com/rust-lang/cargo) и npm (https://github.com/npm/npm).  Исходные тексты распространяются (https://github.com/yarnpkg/yarn) под лицензией BSD.  Сборки подготовлены (https://yarnpkg.com/en/docs/install) для macOS, Windows и Linux.

Yarn позиционируется как замена npm, способная работать с репозиториями npm, но обеспечивающая более высокий уровень производительности, надёжности и безопасности. Основными причинами создания нового пакетного менеджера стала невозможность избавления npm от ряда проблем без его кардинальной переработки. В частности, npm не обеспечивает постоянство установленных зависимостей для разных пользователей и систем. В зависимости от порядка установки пакетов, структура директории node_modules существенно отличается у разных пользователей, что приводит в возникновению ситуаций, в которых у одного пользователя всё может отлично работать, а у другого может проявляться ошибка.  Кроме того, npm работает очень медленно и имеет архитектурные проблемы (https://www.opennet.ru/opennews/art.shtml?num=44111) с безопасностью, связанные с автоматическим выполнением кода из пакетов.


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


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

-  Режим работы в offline: если пакет устанавливался ранее, то его повторная установка может быть осуществлена без наличия сетевого соединения;


-  Идентичность зависимостей: на любых системах, независимо от порядка установки, будет установлен точно такой же набор зависимостей;


-  Оптимизация сетевого взаимодействия: применяются эффективные алгоритмы  группировки пакетов в очередь и обеспечения максимальной пропускной способности при загрузке данных;


-  Стойкость к проблемам в сети: сбой выполнения одного запроса не приводит к прерыванию установки, в случае проблем запрос будет повторён;


-  Возможность комбинирования реестров: можно устанавливать любые пакеты из репозиториев npm и Bower;


-  Плоский режим: для избежания появления дубликатов в Yarn предусмотрен анализ заменяемости версий зависимостей - при несовпадении версии, определяется возможность использования уже установленной версии;

-  Возможность создания фильтров лицензий, допускающих для установки только модули с заданными лицензиями;

-  Наличие стабильного JavaScript API и абстрактной модели журналирования для упрощения интеграции с различными сборочными инструментариями;


-  Минималистичный интерфейс командной строки.


Новшества (https://github.com/yarnpkg/yarn/releases/tag/v1.0.0), представленные в выпуске Yarn 1.0:

-  Включены по умолчанию рабочие области (Workspaces (https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/)), позволяющие автоматически агрегировать все зависимости из нескольких файлов package.json и дающие возможность установить  всех их за один шаг или использовать для всех один файл-блокировку (yarn.lock);

-   Добавлен механизм автоматического слияния изменений (auto-merge), позволяющий автоматически разрешать конфликты с yarn.lock, возникающие, когда в системе управления версиями несколько разработчиков добавляют в yarn.lock данные о разных зависимостях. Подобные конфликты теперь по возможности разрешаются в процессе выполнения команды "yarn install" и в результате создаётся новый yarn.lock, избавленный от конфликтов;


-  Появились средства для выборочного определения версий, которые позволяют решить проблему с обновлением непрямых зависимостей. Например, в пакете может быть устранена важная ошибка или критическая уязвимость, но в текущем проекте этот пакет может использоваться не напрямую, а как зависимость у какого-то другого пакета. Раньше, пока не обновится этот другой пакет, не обновлялись и его зависимости. Теперь в package.json можно задать требуемые версии и для субзависимостей;

-  Улучшен процесс интерактивного обновления;
-  Ускорена проверка целостности файлов;
-  Добавлен отдельный модуль для парсинга файлов блокировки.


URL: https://code.facebook.com/posts/274518539716230
Новость: http://www.opennet.ru/opennews/art.shtml?num=47152

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру