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 [ответить] [показать ветку] [···]    [к модератору]
  • +2 +/
    Уже 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 [^] [ответить]    [к модератору]  
  • +9 +/
    Это нетрудно.
     
  • 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 [^] [ответить]    [к модератору]  
  • –1 +/
    В portage таких проблем нет. Используй его.
     
  • 4.50, KonstantinB (ok), 19:38, 08/09/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    >решил ли npm5 вопросы offline-инсталла?

    Пока не идеально, но прогресс существенный:

    https://github.com/npm/npm/pull/15666

     
  • 1.5, Аноним (-), 23:15, 07/09/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +14 +/
    И вновь толпы фронтендеров наперегонки рванулись за очередной прогрессивной новинкой, не успевая удерживать спадающие джинсы, захлёбываясь от собственных восторженных криков, расталкивая друг друга руками в попытках выйти в лидеры гонки!

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

     
     
  • 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 +/
    я верю - у тебя всё получится! не у всех с первого раза всё получается, главное - не останавливаться и не опускать руки. попробуй вот книжку почитать https://learncodethehardway.org/c/
     
  • 5.19, Anonim (??), 01:16, 08/09/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Действительно, они не знают смысла обоих слов во фразе «разыменовать NULL» :-)
     
  • 5.21, НяшМяш (ok), 02:00, 08/09/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Вспомнил джавистов с их NPE...
     
     
  • 6.34, MPEG LA (ok), 12:13, 08/09/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    у них хоть NPE, а у сишников - порча данных и дыра
     
  • 4.20, анонимус (??), 01:43, 08/09/2017 [^] [ответить]     [к модератору]  
  • +3 +/
    Ох ну ничего себе, перстень поцеловать позволите JS 8212 эта лингва франка т... весь текст скрыт [показать]
     
     
  • 5.28, Аноним (-), 09:27, 08/09/2017 [^] [ответить]     [к модератору]  
  • +4 +/
    Лингва франка сейчас, как и 10, и 20, и 40 лет назад 8212 C Не надо путать ... весь текст скрыт [показать]
     
     
  • 6.36, анонимус (??), 13:26, 08/09/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    Как предсказуемо, в ответ на доводы великий 171 системный программист 187 ст... весь текст скрыт [показать]
     
     
  • 7.38, Аноним (-), 14:13, 08/09/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Спроси себя, «высокоуровный» «программист», как давно ты сделал что-то законченное и полезное само по себе (а не только в совокупности с низкоуровневым кодом)?
     
     
  • 8.49, KonstantinB (ok), 19:33, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    То есть, по вашему, каждый, кто разрабатывает приложение, работающее не напрямую с железом, а, о ужас, работающее только в совокупности с другим кодом (например, кодом ядра), неполноценен? :-)
     
     
  • 9.51, Аноним (-), 22:07, 08/09/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    По-моему, неполноценен тот, кто не может создать что-то стоящее И постоянные см... весь текст скрыт [показать]
     
     
  • 10.53, KonstantinB (ok), 23:14, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    А, ну есть такие персонажи, которые бегут переделывать все на новый модный фреймворк не понимая зачем им это. Только причем тут высокоуровневость-низкоуровневость?
     
     
  • 11.57, Аноним (-), 23:54, 08/09/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    На высокоуровневом языке может писать любая обезьяна, в результате средний по бо... весь текст скрыт [показать]
     
     
  • 12.58, KonstantinB (ok), 01:29, 09/09/2017 [^] [ответить]     [к модератору]  
  • +/
    Если бы не NDA, я бы показал код, написанный на сях одним специалистом по хайло... весь текст скрыт [показать]
     
  • 7.40, Аноним (-), 14:46, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    > великий «системный программист»

    Это тёзка. И протри монитор, а то весь слюной забрызгал.

     
  • 6.43, Аноним (-), 14:59, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    > JS — эта лингва франка текущего поколения

    Вы это серьёзно, или я тэг "сарказм" не заметил?

     
  • 5.35, Аноним (-), 13:06, 08/09/2017 [^] [ответить]     [к модератору]  
  • +5 +/
    Я программист и могу писать и поддерживать код на ЛЮБОМ мейнстримном языке Но П... весь текст скрыт [показать]
     
     
  • 6.37, анонимус (??), 13:30, 08/09/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    Хочу тебя огорчить, ты уже пользуешься софтом на джаве, дотнете и JS, безотносит... весь текст скрыт [показать]
     
  • 5.39, uchiya (ok), 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?

    Если надо, то и на php могут, в отличие от. А так выбор широк - это ж не под полтора браузера писать, которые кроме яваскрипта ничего не могут - от C/C++ до Java.

     
     
  • 6.25, freehck (ok), 08:49, 08/09/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    >> А на чем они пишут?
    > от C/C++ до Java.

    Я бы даже сказал страшнее: от Racket до OCaml. :)

     
  • 6.30, Ан (??), 10:18, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    А что же с теми кто пилят проекты на NodeJS теперь, но ранее работали c Java, C++, PHP, Python?
    У вас мир какой-то мир однобокий.
     
     
  • 7.52, Аноним (-), 22:11, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    > А что же с теми кто пилят проекты на NodeJS теперь, но ранее работали c Java, C++, PHP, Python?

    А теперь они раз в полгода меняют фреймворк и раз в два года пакетный менеджер?

     
  • 2.18, Аноним (-), 01:10, 08/09/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Я вообще тормоз по жизни, но как только выкатили yarn и я увидел в тексте что-то про yarn.lock, я реально всё бросил и пошел ставить xD
     
     
  • 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 (ok), 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 (как и многие другие рантаймы) из пакетов, тем более из репозиториев LTS-дистрибутивов, там гарантировано заведомо окаменелая некроверсия времён династии Цин...
     
     
  • 3.26, Аноним (-), 09:18, 08/09/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    > Не надо ставить node.js

    точка

     
     
  • 4.45, KonstantinB (ok), 17:46, 08/09/2017 [^] [ответить]    [к модератору]  
  • +/
    И чем же фронтенд собирать прикажете?

    Писать ручками JS без статической типизации, а весь CSS без препроцессоров, заменяя труд машины трудом человека?

     
  • 3.47, KonstantinB (ok), 19:28, 08/09/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Из пакетов ставить надо. Только, конечно, не из репозиториев дистрибутивов, а из NodeSource и подобных: https://nodejs.org/en/download/package-manager/
     
     
  • 4.54, Онаним (?), 23:40, 08/09/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Да, точно, это я и имел ввиду.
     
  • 4.55, Йоманан (?), 23:44, 08/09/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Непонятно, кстати, зачем такие вещи вообще включают в официальные дистрибутивы, кода всё-равно к моменту выхода (а то и задолго до) они протухнут и всё-равно придётся использовать внешние источники.

     
     
  • 5.65, KonstantinB (ok), 16:38, 09/09/2017 [^] [ответить]    [к модератору]  
  • +/
    Задача LTS дистрибутива в первую очередь в том, чтобы обеспечить стабильную работу всех входящих в него пакетов во всех комбинациях. Потому там заведомо будет не самый свежий софт.
     
  • 4.61, Zarat (ok), 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 лучше для веб-разработки. Язык хотя бы мозги включить обязывает. В JS этого нет. И единая форма написания операторов, функций и т.п. Потому что все есть функция.
     
     
  • 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 (ok), 17:41, 08/09/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    В последних npm сделали генерацию package-lock.json, этакий shrinkwrap, но по умолчанию. При этом его можно публиковать без проблем (с публикацией shrinkwrap.json в разных версиях npm были разные приколы). Так что самую существенную проблему (со стабилизацией зависимостей) они решили, поздновато, конечно, но, как говорится, лучше поздно, чем никогда.
     

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


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