Facebook запустил пакетный менеджер для JavaScript

21 комментарий
Facebook запустил пакетный менеджер для JavaScript

Компания Facebook представила новый пакетный менеджер Yarn, ориентированный на управление зависимостями в проектах на языке JavaScript. Yarn разработан совместно с инженерами из компаний Exponent, Google и Tilde, и вобрал в себя опыт и лучшие идеи менеджеров зависимостей Bundler, Cargo и npm, пишет OpenNews.

Читать далее

Иллюстрация: Facebook

Исходный код распространяются под лицензией BSD. Сборки подготовлены для macOS, Windows и Linux.

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

Иллюстрация: Facebook

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

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

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

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Горячие события

Gismart Online Meetup
9 декабря

Gismart Online Meetup

Минск

Читайте также

Facebook получила иск за дискриминацию американцев при найме
Facebook получила иск за дискриминацию американцев при найме
Facebook получила иск за дискриминацию американцев при найме
WhatsApp получил новое большое обновление
WhatsApp получил новое большое обновление
WhatsApp получил новое большое обновление
1 комментарий
Facebook купила CRM-стартап за $1 млрд
Facebook купила CRM-стартап за $1 млрд
Facebook купила CRM-стартап за $1 млрд
Война Apple и Facebook. Новый эпизод или обострение хронической болезни?
Война Apple и Facebook. Новый эпизод или обострение хронической болезни?
Война Apple и Facebook. Новый эпизод или обострение хронической болезни?
Противостояние двух ИТ-гигантов продолжается уже не один год. В 2019-м отношения двух компаний накалились до предела — Apple отключила инструменты разработчика Facebook. В 2020-м — новая волна взаимной неприязни и упреков в СМИ и соцсетях накатила под конец года.

Обсуждение

9

спасибо, еще один пакетный менеджер это то что нужно

1

Осталось представить ZuckerScript который работает только в браузере Facebook.

0

Попробовал на реальном проекте, работает быстро, но зависимости разрулит не так как npm, в итоге проект не работает из-за недостающего проекта.

Игорь Лаврусик
Игорь Лаврусик Software Engineer в Fitbit
4

Я когда читаю новости про JavaScript, у меня какое-то ощущение что мир сошел с ума. Прям ощущаю себя человеком, который стоит, отгороженный толстым-толстым стеклом на смотровой площадке на краю пропасти, и беспомощно наблюдает за тем, как толпы народу с безумными глазами с разбегу сигают вниз. А ты им кричишь: "Стойте! Что вы делаете!?" — а они тебя не слышат.

0

Да не. Если вы присутствовали при всей этой эволюции JavaScript-а от снежинок в браузере, до того, что мы имеем сейчас - то все довольно просто и логично.

Эволюция языка. Эволюция инструментов. Хайпа может быть чуть больше, чем надо. Но это не страшно.

Был пакетный менеджер npm. У него были недостатки. Они там внутри как-то решались, с определенными оговорками. Эти же недостатки проанализировали ребята со стороны и выпустили нечто, что их вроде как решает. Вот и вот.

Игорь Лаврусик
Игорь Лаврусик Software Engineer в Fitbit
4

Вот именно! Взяли HTML+CSS+JavaScript, главная и единственная задача которых была отформатировать текст и пустить по нему падать снежинки (судя по всему - чисто по приколу) и вырастили из них монстра. А все такие молчат и делают вид что ничего не происходит. Типа: "Ну а чё? Плохой язык что-ли? Посмотрите какое комьюнити большое! И фреймворков разных!"

4

Более того, уже на полном серьезе говорят, что бэкенд на жс это труъ https://twitter.com/phillip_webb/status/758824415547109376

2

Ну вот я серверной разработки плотно не касался на JavaScript (утилитки для консоли не в счет), поэтому ничего не могу сказать.

Но вот по поводу клиентской части. Первые проекты были как вы говорите: HTML, CSS, JavaScript. И было не очень весело возюкаться с декларативным HTML-ом теми средствами, какие у нас были (имею в виду серверное нечто типа PHP и клиентский jQuery с плагинами).

Потом на глаза попали первые версии KnockoutJS и жить стало резко веселее. Во-первых, это избавило от проблем согласования декларативного HTML-а и императивного кода на JavaScript. Во-вторых, возникло понимание того, что иногда есть смысл на клиентской части заводить отдельную модель (View Model имею в виду). И что хранить состояние на клиенте в DOM дереве - не всегда хорошая затея, скажем мягко.

Потом возникло понимание того, что подключать файлики с кусочками кода вручную не очень весело. И вообще, а почему мы нам не начать думать о JavaScript-е в отдельных в файлах как об отдельных модулях? И тут появились Require JS в частности и AMD в общности (ну или Common JS).

Где много файлов и действий, там и автоматизация. Grunt, Gulp - выбирайте любое. А еще у нас код неплохо было бы статически анализировать: jslint, jshint, eshint. А еще я не хочу изобретать велосипеды, я хочу библиотеки юзать и хочу я их подключать более-менее единообразно. Пакетные менеджеры в помощь.

А коль скоро у меня есть сервер, я же могу всю черновую работу делать на нем, и уже публично отдавать аккуратно собранный, минифицированный и подготовленный JS и CSS.

Ах, я же на сервере код собираю. Так давайте я не буду себя ограничивать и верстку я буду делать с помощью хороших и удобных вещей. SASS, LESS, вот это вот всё. И JavaScript же тоже можно "апгрейднуть". Давайте я не буду ждать, а заюзаю все новые и удобные фичи из него прямо сейчас, а чтобы браузеры это все могли пережевать, конвертну это дело в совместимый вариант (привет Babel).

А еще у меня операции обращения к DOM дереву - это медленно. Давайте что-ли будем его дергать пореже... VirtualDOM и React же!

Только что-то вся модель на клиентской части как-то быстро в спагетти превращается. Давайте что-ли какой подход придумаем единообразный. Может реактивное программирование? Flux? Redux?

И так далее. Все логично. Но при этом осознанность должна присутствовать, это без сомнения. Надо уметь себя и ближних ограничивать. Особенно в бесконечном порыве попробовать новое, поиграться с технологиями... а бизнес-задачи, мол, подождут. А то наступит печалька.

Игорь Лаврусик
Игорь Лаврусик Software Engineer в Fitbit
3

Ну, короче, я давно хочу об этом целый большой и нудный пост на какой Хабр написать, так как коротко тут не объяснить :)
Просто я бы хотел узнать: все все, кто пишет на Джаваскрипте и хвалят его, они что, действительно не видят никакой проблемы в том, что используют "Язык Разметки гиперТекста" и "язык", который слабали на коленке для добавления примитивной "динамики" (ни о каких данных, "модели", объектах, функциональном программировании, модулях даже мысли ни у кого не было), для рисования таблиц, меню, кнопок, хранения данных, обмена данных... При помощи языка разметки текста!? Вы серьёзно, что-ли!?
Да, я понимаю почему так получилось (задачи были - а инструментов не было). Да, я понимаю почему сейчас такой потешный зоопарк библиотек, фреймворков и утилит - задачи нужно как-то решать.

Я не понимаю почему все молчат, и прикидываются будто бы всё ок.

1

Ваша мысль очень здравая. Мне на ум в качестве ближайшей реальной штуки-дрюки приходит вот это: https://developers.google.com/web/fundamentals/getting-started/primers/customelements

2

Придет WebAssembly - порядок наведет :)

-1

почему молчат? мне вот это нравится: https://habrahabr.ru/post/312022/

0

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

1

Дык велогонки же... :)

-4

Это кризис среднего возраста, и он у Вас

0

больше страдания напоминает с бесконтрольным натаскиванием мусора в ЖС из жавы, питона и немного руби. страдают уже лет десять, родить дитя не могут. с тем, что результат более близок к безумию согласен почти на 100 процентов. ES6 худшее что видел за последнее время.

происходят смены поколений программистов, вот только грабли по которым побежит следующие практически те же :)

0
owlman
owlman FrontEnd developer в Capsilon
0

Возможно С++ девелоперы думали также, когда вышла Java ))

Игорь Лаврусик
Игорь Лаврусик Software Engineer в Fitbit
1

Вот именно что нет :) Холивары были, конечно, но было понятно для чего это всё и ради чего. Тут же совсем другое: тут холивару даже не на чем возникнуть. Просто человечество поделилось на 2 половины: одни с разбегу прыгают в пропасть, а другие тупо смотрят на них и даже не знают как начать аргументацию... "Чувак - ты сделаешь пару шагов и улетишь в пропасть" — "Ты просто мне завидуешь!" - отвечает тот и прыгает.

4

ужеж есть один yarn, с фантазией совсем у них плохо

2

Поставил зависимости "на-холодную" за 40 сек. Блин, когда теперь чай пить?

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже