The OpenNET Project / Index page

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

07.09.2017 22:40  Facebook выпустил Yarn 1.0, пакетный менеджер для JavaScript

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

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

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

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

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

Новшества, представленные в выпуске Yarn 1.0:

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


  1. Главная ссылка к новости (https://code.facebook.com/post...)
  2. OpenNews: Более половины npm-пакетов могли быть скомпрометированы из-за ненадёжных паролей доступа
  3. OpenNews: NPM стал крупнейшим репозиторием пакетов
  4. OpenNews: Применение тайпсквоттинга для распространения вредоносных модулей NPM, PyPI и Gems
  5. OpenNews: Незащищённость NPM к атакам по внедрению вредоносных модулей-червей
  6. OpenNews: Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM
Лицензия: CC-BY
Тип: Программы
Ключевые слова: yarn, javascript
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, mimocrocodile, 22:45, 07/09/2017 [ответить] [смотреть все]
  • +1 +/
    Уже 1.0.1 версия, джаваскрипт программисты они такие
     
  • 1.2, Виталик, 22:50, 07/09/2017 [ответить] [смотреть все]
  • –5 +/
    Единственное опенсорс ПО от фейсбук Что реакт, что флоу, что ризон ограничены п... весь текст скрыт [показать]
     
     
  • 2.4, Фафафа, 23:13, 07/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Джжастину Бирберу спасибо!
     
  • 1.3, Борщдрайвен бигдата, 23:07, 07/09/2017 [ответить] [смотреть все]  
  • +/
    Действительно, получше npm'а будет.
     
     
  • 2.6, Аноним, 23:24, 07/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +8 +/
    Это нетрудно.
     
  • 2.29, Аноним, 10:06, 08/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    npm 5.0 по сути все тоже самое делает. Facebook опоздал.
     
     
  • 3.32, Аноним, 10:56, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    npm все еще то гогно.
     
  • 3.42, Аноним, 14:55, 08/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Что значит опоздал Npm5 это исключительно их ответ на появление yarn В принцип... весь текст скрыт [показать]
     
     
  • 4.46, бибер.жс, 18:13, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    а если в процессе загрузки пакет побился не загрузился полностью т е нерабочий... весь текст скрыт [показать]
     
     
  • 5.60, По оо, 04:31, 09/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Для поддержания безопасности в Yarn осуществляется проверка целостности каждого ... весь текст скрыт [показать]
     
     
  • 6.67, М9, 11:58, 11/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Здесь*. Пиши правильно =)
     
  • 5.66, Старый одмин, 10:09, 11/09/2017 [^] [ответить] [смотреть все]  
  • +/
    В portage таких проблем нет. Используй его.
     
  • 4.50, KonstantinB, 19:38, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Пока не идеально, но прогресс существенный https github com npm npm pull 1566... весь текст скрыт [показать]
     
  • 1.5, Аноним, 23:15, 07/09/2017 [ответить] [смотреть все]  
  • +12 +/
    И вновь толпы фронтендеров наперегонки рванулись за очередной прогрессивной новинкой, не успевая удерживать спадающие джинсы, захлёбываясь от собственных восторженных криков, расталкивая друг друга руками в попытках выйти в лидеры гонки!

    Воистину прогресс в наши дни не просто не стоит на месте, а облетает планету стремительной ракетой! Воистину инновации сыплются как из рога изобилия! Мы живём в прекрасное время, троекратное ура нам всем!

     
     
  • 2.7, Аноним, 23:36, 07/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    скулеж ретрограда, не закоммитившего за свою жизнь ни строки в опенсорс
     
     
  • 3.12, Аноним, 00:30, 08/09/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    Это смех Скулёж у тебя начался, это твоё чего вы смеётесь , на себя посмотрит... весь текст скрыт [показать]
     
  • 2.9, Аноним, 23:54, 07/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –4 +/
    А вот и не фронтендеров, а как раз таки больше бекендеров
     
     
  • 3.10, Аноним, 00:03, 08/09/2017 [^] [ответить] [смотреть все]  
  • –4 +/
    А есть разница между этими категориями макак?

    // Системный программист

     
     
  • 4.15, Аноним, 00:48, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Они как минимум не разыменовывают NULL
     
     
  • 5.17, Аноним, 01:09, 08/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Правда А кто же тогда, всю жизнь проработав на скриптоте в песочнице браузера и... весь текст скрыт [показать]
     
     
  • 6.48, бибер.жс, 19:32, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    я верю - у тебя всё получится не у всех с первого раза всё получается, главное ... весь текст скрыт [показать]
     
  • 5.19, Anonim, 01:16, 08/09/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Действительно, они не знают смысла обоих слов во фразе 171 разыменовать NULL ... весь текст скрыт [показать]
     
  • 5.21, НяшМяш, 02:00, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Вспомнил джавистов с их NPE...
     
     
  • 6.34, MPEG LA, 12:13, 08/09/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    у них хоть NPE, а у сишников - порча данных и дыра
     
  • 4.20, анонимус, 01:43, 08/09/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Ох ну ничего себе, перстень поцеловать позволите JS 8212 эта лингва франка т... весь текст скрыт [показать]
     
     
  • 5.28, Аноним, 09:27, 08/09/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Лингва франка сейчас, как и 10, и 20, и 40 лет назад 8212 C Не надо путать ... весь текст скрыт [показать]
     
     
  • 6.36, анонимус, 13:26, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Как предсказуемо, в ответ на доводы великий 171 системный программист 187 ст... весь текст скрыт [показать]
     
     
  • 7.38, Аноним, 14:13, 08/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Спроси себя, 171 высокоуровный 187 171 программист 187 , как давно ты сде... весь текст скрыт [показать]
     
     
  • 8.49, KonstantinB, 19:33, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    То есть, по вашему, каждый, кто разрабатывает приложение, работающее не напрямую... весь текст скрыт [показать]
     
     
  • 9.51, Аноним, 22:07, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    По-моему, неполноценен тот, кто не может создать что-то стоящее И постоянные см... весь текст скрыт [показать]
     
     
  • 10.53, KonstantinB, 23:14, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    А, ну есть такие персонажи, которые бегут переделывать все на новый модный фрейм... весь текст скрыт [показать]
     
     
  • 11.57, Аноним, 23:54, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    На высокоуровневом языке может писать любая обезьяна, в результате средний по бо... весь текст скрыт [показать]
     
     
  • 12.58, KonstantinB, 01:29, 09/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Если бы не NDA, я бы показал код, написанный на сях одним специалистом по хайло... весь текст скрыт [показать]
     
  • 7.40, Аноним, 14:46, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Это тёзка И протри монитор, а то весь слюной забрызгал ... весь текст скрыт [показать]
     
  • 6.43, Аноним, 14:59, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Вы это серьёзно, или я тэг сарказм не заметил ... весь текст скрыт [показать]
     
  • 5.35, Аноним, 13:06, 08/09/2017 [^] [ответить] [смотреть все]  
  • +4 +/
    Я программист и могу писать и поддерживать код на ЛЮБОМ мейнстримном языке Но П... весь текст скрыт [показать]
     
     
  • 6.37, анонимус, 13:30, 08/09/2017 [^] [ответить] [смотреть все]  
  • –3 +/
    Хочу тебя огорчить, ты уже пользуешься софтом на джаве, дотнете и JS, безотносит... весь текст скрыт [показать]
     
  • 5.39, uchiya, 14:21, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Убийство мирных людей 8212 эта лингва франка текущего поколения, как принижен... весь текст скрыт [показать]
     
  • 3.13, Аноним, 00:31, 08/09/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Бэкендеры на яваскрипте не пишут Это фронтендеры, которых наняли на бэкенд а об... весь текст скрыт [показать]
     
     
  • 4.14, Вы забыли заполнить поле Name, 00:46, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    А на чем они пишут? На php?
     
     
  • 5.16, Аноним, 01:06, 08/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Если надо, то и на php могут, в отличие от А так выбор широк - это ж не под пол... весь текст скрыт [показать]
     
     
  • 6.25, freehck, 08:49, 08/09/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Я бы даже сказал страшнее от Racket до OCaml ... весь текст скрыт [показать]
     
  • 6.30, Ан, 10:18, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    А что же с теми кто пилят проекты на NodeJS теперь, но ранее работали c Java, C ... весь текст скрыт [показать]
     
     
  • 7.52, Аноним, 22:11, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    А теперь они раз в полгода меняют фреймворк и раз в два года пакетный менеджер ... весь текст скрыт [показать]
     
  • 2.18, Аноним, 01:10, 08/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Я вообще тормоз по жизни, но как только выкатили yarn и я увидел в тексте что-то... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.33, juvvidildo, 11:05, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    При этом про npm-shrinkwrap, который был до yarn'а, вы не слышали, да?
     
     
  • 4.41, Аноним, 14:51, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Разумеется я слышал и даже попробовал А потом узнал, что этот shrinkwrap внеза... весь текст скрыт [показать]
     
  • 2.27, труляляй, 09:27, 08/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ох, если бы только фронтэндеров Те, кто знают исключительно яву, везде пытаются... весь текст скрыт [показать] [показать ветку]
     
  • 1.22, Zarat, 02:09, 08/09/2017 [ответить] [смотреть все]  
  • –1 +/
    Пакет для убунту из https://yarnpkg.com/ не совместим с пакетом npm в Debian Jessie.
    пакет Yarn - требует установку Nodejs версии 4.7.2~dfsg-2 (jessie-backports)
    но при этом удаляется npm, который требует Nodejs обязательно версии 0.10.29~dfsg-2 (oldstable)
    В итоге, или пересобирать пакет для Debian или выбирать, какой пакетный менеджер JS использовать


     
     
  • 2.24, Ананйм, 07:54, 08/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Не надо ставить node js как и многие другие рантаймы из пакетов, тем более из ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.26, Аноним, 09:18, 08/09/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    > Не надо ставить node.js

    точка

     
     
  • 4.45, KonstantinB, 17:46, 08/09/2017 [^] [ответить] [смотреть все]  
  • +/
    И чем же фронтенд собирать прикажете Писать ручками JS без статической типизаци... весь текст скрыт [показать]
     
  • 3.47, KonstantinB, 19:28, 08/09/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    Из пакетов ставить надо Только, конечно, не из репозиториев дистрибутивов, а из... весь текст скрыт [показать]
     
     
  • 4.54, Онаним, 23:40, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Да, точно, это я и имел ввиду.
     
  • 4.55, Йоманан, 23:44, 08/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Непонятно, кстати, зачем такие вещи вообще включают в официальные дистрибутивы, ... весь текст скрыт [показать]
     
     
  • 5.65, KonstantinB, 16:38, 09/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Задача LTS дистрибутива в первую очередь в том, чтобы обеспечить стабильную рабо... весь текст скрыт [показать]
     
  • 4.61, Zarat, 11:26, 09/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Согласен. Это лучшее решение. Но мне деплоить в продакшен не нужно. А раз все, что надо (за исключением сабжа), до того работало на версии династии Цин, то зачем делать лишние телодвижения
     
  • 2.64, Firefoxus, 15:06, 09/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Поставьте себе nvm и не мучайтесь.
     
  • 1.31, Аноним, 10:22, 08/09/2017 [ответить] [смотреть все]  
  • –3 +/
    ClojureScript и экосистема Clojure лучше для веб-разработки Язык хотя бы мозги ... весь текст скрыт [показать]
     
     
  • 2.56, Номйоан, 23:48, 08/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    > ClojureScript и экосистема Clojure лучше для веб-разработки. Язык хотя бы мозги включить
    > обязывает. В JS этого нет. И единая форма написания операторов, функций
    > и т.п. Потому что все есть функция.

    Вы абсолютно правы, любой язык лучше JavaScript-a, а Clojure так вообще офигенен, но рынку, к сожалению, пофиг.

     
  • 2.59, Аноним, 01:59, 09/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    0 ... весь текст скрыт [показать] [показать ветку]
     
  • 1.44, KonstantinB, 17:41, 08/09/2017 [ответить] [смотреть все]  
  • –1 +/
    В последних npm сделали генерацию package-lock.json, этакий shrinkwrap, но по умолчанию. При этом его можно публиковать без проблем (с публикацией shrinkwrap.json в разных версиях npm были разные приколы). Так что самую существенную проблему (со стабилизацией зависимостей) они решили, поздновато, конечно, но, как говорится, лучше поздно, чем никогда.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor