Spec-Zone.ru › Node.js 18 LTS

Corepack

Добавлен в: v16.9.0, v14.19.0
Устойчивость: 1 - Экспериментальный

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

Эта функция упрощает два основных процесса:

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

  • Она позволяет гарантировать, что каждый член вашей команды будет использовать именно ту версию менеджера пакетов, которую вы имеете в виду, без необходимости ручного синхронизирования каждый раз, когда требуется обновление.

Процессы работы

Включение функции

Из-за экспериментального статуса Corepack в настоящее время необходимо явно включить его, чтобы он имел какой-либо эффект. Для этого выполните corepack enable, что создаст символические ссылки в вашей среде рядом с node бинарником (и перезапишет существующие символические ссылки при необходимости).

С этого момента любой вызов поддерживаемых бинарников будет работать без дополнительной настройки. В случае проблем выполните corepack disable для удаления прокси из вашей системы (и рассмотрите возможность создания проблемы в репозитории Corepack, чтобы сообщить нам об этом).

Настройка пакета

Прокси Corepack найдут ближайший файл package.json в вашей текущей иерархии каталогов, чтобы извлечь свойство "packageManager".

Если значение соответствует поддерживаемому менеджеру пакетов, Corepack обеспечит, что все вызовы соответствующих бинарников будут выполнены с запрошенной версией, загрузив ее по запросу при необходимости и прервав выполнение, если её невозможно успешно получить.

Обновление глобальных версий

При выполнении вне существующего проекта (например, при выполнении yarn init), Corepack по умолчанию будет использовать предопределённые версии, примерно соответствующие последним стабильным выпускам каждого инструмента. Эти версии могут быть переопределены путём выполнения команды corepack prepare вместе с версией менеджера пакетов, которую вы хотите установить:

corepack prepare yarn@x.y.z --activate copy

В качестве альтернативы может быть использован тег или диапазон:

corepack prepare pnpm@latest --activate
corepack prepare yarn@stable --activate copy

Процесс работы в автономном режиме

Многие производственные среды не имеют доступа к сети. Поскольку Corepack обычно загружает релизы менеджеров пакетов непосредственно с их репозиториев, это может конфликтовать с такими средами. Чтобы этого избежать, выполните команду corepack prepare, когда у вас ещё есть доступ к сети (обычно в то же время, когда вы готовите свой образ развертывания). Это гарантирует, что необходимые менеджеры пакетов будут доступны даже без доступа к сети.

Команда prepare имеет различные флаги. Для получения дополнительной информации обратитесь к подробной документации Corepack.

Поддерживаемые менеджеры пакетов

Следующие бинарные файлы предоставляются через Corepack:

Менеджер пакетов Имена бинарников
Yarn yarn, yarnpkg
pnpm pnpm, pnpx

Общие вопросы

Как Corepack взаимодействует с npm?

Хотя Corepack мог бы поддерживать npm как любой другой менеджер пакетов, его шимы по умолчанию не включены. Это имеет несколько последствий:

  • Всегда можно выполнить команду npm внутри проекта, настроенного для использования с другим менеджером пакетов, так как Corepack не может перехватить её.

  • Хотя npm является допустимым вариантом в свойстве "packageManager", отсутствие шима приведет к использованию глобального npm.

Выполнение npm install -g yarn не работает

npm препятствует случайному перезаписи бинарных файлов Corepack при выполнении глобальной установки. Чтобы избежать этой проблемы, рассмотрите один из следующих вариантов:

  • Не выполняйте эту команду; Corepack все равно предоставит бинарные файлы менеджера пакетов и гарантирует, что запрошенные версии всегда будут доступны, поэтому установка менеджеров пакетов явно не требуется.

  • Добавьте флаг --force к npm install; это сообщит npm, что можно перезаписывать бинарные файлы, но в процессе вы удалите и бинарные файлы Corepack. (Выполните corepack enable для их повторного добавления.)

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v18.x/docs/api/corepack.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API