Знакомство
Yarn 2 (Berry) это новый выпуск революционного и хорошо зарекомендовавшего себя менеджера пакетов Yarn, включающий в себя такие особенности, как: PlugnPlay, возможность расширения модульного API, оффлайн-кэш и улучшенную поддержку рабочих пространств.
PlugnPlay
Yarn PnP это новая функция, которая по умолчанию включена в Yarn 2. PnP избавляет проекты от папки node_modules в пользу файла.pnp.js.
Файл.pnp.js сопоставляет все пакеты, установленные в проекте, с тем местом, где Yarn разместил их на вашем диске. Это избавляет от большого количества операций ввода-вывода при генерации node_modules, обеспечивая более быструю и надёжную установку.
В новой документации Yarn подробно рассказываетсяо недостатках node_modules,как структуры папок, и объясняется, почему необходим новый взгляд на управление зависимостями.
Монорепозитории
Не зависимо от того, являетесь бы поклонником монорепозиториев или нет, чтобы обеспечить качественное управление большими проектами и сложными рабочими процессами, потребуется хороший набор инструментов.
Популярным рецептом настойки JavaScript монорепозитория является комбинация рабочих пространств Yarn и использование Lerna в качестве менеджера проектов.
Хорошая новость заключается в том, что теперь Yarn может одновременно выполнять функции как менеджера пакетов, так и менеджера проектов, пытаясь обеспечить положительный опыт работы в этом аспекте.
Модульная архитектура, плагины
Сделав важный шаг вперед, Yarn 2 был переработан в пользу нового
модульного API, расширяемого при помощью плагинов. В настоящее
время большинство функций уже реализовано с их помощью
дажеyarn add
иyarn install
являются
предустановленными плагинами!
Вы можете сами написать плагин для Yarn, а чтобы дать вам
представление об этом процессе, разработчики Yarn создалиплагин TypeScript, который
будет автоматически добавлять
соответствующие@types/packages
каждый раз, когда вы
запускаетеyarn add
.
Как начать работу?
Установка
Yarn придерживается стратегии глобальной установки первой версии, а уже затем переключения на вторую для конкретного проекта.
Сначала установим глобальный Yarn, который мы будем использовать для создания локальных экземпляров:
npm install -g yarn
Выполнив данную инструкцию (запускyarn
--version
должен вывести что-то вроде1.22.x
),
перейдём к созданию каталога для запуска нового проекта:
mkdir my-app cd my-app
Berry кодовое имя релизной ветки Yarn 2.
Изменим версию Yarn конкретно для каталогаmy-app
:
yarn set version berry
После выполнения данной команды установка будет завершена, и можно переходить к установке зависимостей!
Добавление зависимостей
Общие команды управления остались теми же, что и в предыдущих версиях:
-
yarn init
инициализация проекта -
yarn add <package> [--dev]
добавление пакета -
yarn remove <package>
удаление пакета -
yarn up <package>
обновление пакета
Также, вы можете увидеть некоторые изменения консольного интерфейса в новой версии Yarn:
-
каждый набор связанных задач, выполняемых в процессе установки, сгруппирован;
-
почти все сообщения имеют собственные коды ошибок, которые можно найти вдокументации;
-
цвета теперь используются только для обозначения важных частей каждого сообщения.
Установка React.js с Yarn-плагином TypeScript
Далеко не все пакеты поставляются с собственными определениями типов, но уже нет поводов для волнения, ведь там, где их нет, Yarn возьмёт работу на себя.
Перед выполнением операцией ниже, следует установить Yarn Berry для рабочей директории и убрать детей от экрана.
Инициализируем package.json и установим плагин TypeScript:
yarn init yarn plugin import typescript
Проведем установку библиотеки React:
yarn add react react-dom YN0000: Resolution step YN0000: Completed in 1s 932ms YN0000: Fetch step YN0013: loose-envify@npm:1.4.0 YN0013: object-assign@npm:4.1.1 YN0013: react-dom@npm:17.0.2 YN0013: react@npm:17.0.2 YN0013: scheduler@npm:0.20.2 YN0000: Completed in 0s 502ms YN0000: Link step YN0000: Completed YN0000: Done in 2s 503ms
Зависимости @types/
были успешно установлены!
Что в итоге
Ветка Yarn 1.x (Classic) уже официально перешла в статус поддержки, предполагающей только исправление уязвимостей.
Все новые функции будут разрабатываться исключительно для Yarn
2, версия которого будет распространяться черезyarn set
version
.
Если Yarn не подружится с вашей IDE, нужно будет кое-что установить. Не скучайте!