Плагины
С момента создания Yarn мы всегда стремились к экспериментированию, развитию и продвижению статус-кво — каждый раз делая один шаг дальше, прокладывая путь для наших последующих действий.
Как вы можете догадаться, эта философия (в сочетании с большим количеством внешних вкладов) требует от нас быстрой итерации, чтобы адаптироваться к различным экспериментам. Сделав большой шаг вперёд, Yarn в версии v2 был переработан для использования новой модульной API, которая может быть расширена с помощью плагинов. В настоящее время большинство наших функций реализованы с помощью этих плагинов — даже yarn add и yarn install являются предварительно установленным плагинами!
Что могут делать плагины?
Плагины могут добавлять новые решатели. Решатели — это компоненты, которые отвечают за преобразование диапазонов зависимостей (например,
^1.2.0) в полные квалифицированные ссылки на пакеты (например,npm:1.2.0). Реализовав решатель, вы можете указать Yarn, какие версии являются допустимыми кандидатами для определённого диапазона.Плагины могут добавлять новые загрузчики. Загрузчики — это компоненты, которые берут полные квалифицированные ссылки на пакеты, упомянутые на предыдущем шаге (например,
npm:1.2.0), и знают, как получить данные о пакете, к которому они относятся. Загрузчики могут работать с удалёнными пакетами (например, реестром npm), но также могут находить пакеты напрямую из их расположения на диске (или любого другого источника данных).Плагины могут добавлять новые связыватели. После того, как все пакеты были найдены и готовы к установке, Yarn вызовет связыватели для создания файлов, необходимых для корректной работы целей установки. Например, связыватель PnP создаст манифест
.pnp.cjs, а связыватель Python — файлы virtualenv.Плагины могут добавлять новые команды. Каждый плагин может предоставлять любое количество команд, которые будут встроены в наш CLI (а также сделают их доступными через
yarn --help). Поскольку плагины Yarn динамически связаны с работающим процессом Yarn, они могут быть очень маленькими и гарантированно будут иметь такое же поведение, как ваш менеджер пакетов (что не будет происходить, если вы переисполните, например, обнаружение рабочей области).Плагины могут регистрироваться на некоторые события. Yarn имеет понятие «хуки», где события периодически срабатывают во время жизненного цикла менеджера пакетов. Плагины могут регистрироваться на эти хуки, чтобы добавить свою логику в зависимости от того, что позволяет ядро. Например, хук
afterAllInstalledбудет вызываться каждый раз, когда методProject#installзавершится — обычно после каждойyarn install.Плагины могут быть интегрированы друг с другом. Каждый плагин имеет возможность вызывать специальные действия, называемые хуками, и регистрировать себя в любом определённом хуке. Например, вы можете создать плагин, который будет выполнять действие каждый раз, когда пакет добавляется как зависимость одного из ваших пространств работы!
Как написать плагин?
У нас есть учебник по этому! Перейдите к Учебнику по плагинам.
Официальные плагины
yarn plugin import <name>constraints — Добавляет новые команды в Yarn для проверки правил проверки кода во всех пространствах работы. Дополнительную информацию см. на специальной странице.
exec — Добавляет новый протокол в Yarn (
exec:), который динамически генерирует произвольные пакеты вместо их скачивания из известного места. Дополнительную информацию см. на странице плагина.interactive-tools — Добавляет различные команды, предоставляющие более высокий уровень управления вашим проектом с помощью графических интерфейсов терминала (например,
yarn upgrade-interactive).stage — Добавляет новую команду в Yarn (
yarn stage) для автоматического размещения и коммита всех изменений в файлы, относящиеся к Yarn, в одной строке.typescript — Улучшает опыт работы с TypeScript (например, автоматически добавляет пакеты
@typesв качестве зависимостей при необходимости). Дополнительную информацию см. на странице плагина.version — Добавляет новый рабочий процесс в Yarn (
yarn version) для эффективного управления выпусками в монорепозитории. Дополнительную информацию см. на специальной странице.workspace-tools — Добавляет различные команды, которые делают работу с пространствами работы более удобной (например,
yarn workspaces foreach).
Плагины сообщества
yarn plugin import <bundle url>Это просто централизованный список плагинов сторонних разработчиков, чтобы упростить поиск. Никаких гарантий качества, совместимости или отсутствия вредоносного кода плагинов не предоставляется. Как и со всеми зависимостями сторонних разработчиков, вы должны самостоятельно проверить их перед включением в свой проект.
plugin-installs от Larry1123 — создание минимальных установок yarn после удаления зависимостей разработки, не относящихся к пространствам работы, пакетов
@types, и т. д.yarn.build от Owen Kelly — запуск сборок и тестов параллельно в соответствии с зависимостями вашей рабочей области, если они изменились, и объединение их в готовые приложения для Docker, AWS Lambda или любого другого сервера.
licenses от Noah Negin-Ulster — аудит лицензий прямых и косвенных зависимостей для обеспечения соблюдения.
semver-up от Noah Negin-Ulster — настраиваемая команда
yarn up, которая сохраняет семантические диапазоны версий и группы обновлений.conditions от Nicolò Ribaudo — возможность выбора между различными версиями зависимостей посредством флагов во время установки (во время разработки) и публикации.
az-cli-auth от Fish & Richardson P.C — использует az cli для создания маркеров аутентификации при использовании репозиториев azure devops.
outdated от Mark Skelton — выводит список устаревших зависимостей, аналогично команде Yarn 1.x
outdated.engines от Yaroslav Admin — принудительно устанавливает диапазон версий Node, указанный в поле
package.json, в полеengines.node.
Если вы сами написали плагин, не стесняйтесь открыть PR, чтобы добавить его в конец этого списка!
© 2016–present Yarn Contributors
Licensed under the BSD License.
https://v3.yarnpkg.com/features/plugins