Corepack — это сценарий Node.js с нулевой зависимостью во время выполнения, который действует как мост между проектами Node.js и менеджерами пакетов, с которыми они предназначены для использования во время разработки. На практике Corepack позволяет использовать Yarn, npm и pnpm без необходимости их установки .
Corepack распространяется по умолчанию со всеми последними версиями Node.js. Запустите corepack enable
, чтобы установить необходимые двоичные файлы Yarn и pnpm на ваш путь.
Сначала удалите глобальные двоичные файлы Yarn и pnpm (просто оставьте npm). Обычно это можно сделать, выполнив следующую команду:
npm uninstall -g Yarn pnpm# Этого должно быть достаточно, но если вы установили Yarn без использования npm, это может# быть более утомительным - например, вам может потребоваться также запустить `brew uninstall Yarn`.
Затем установите Corepack:
npm install -g corepack
Мы признаем иронию и накладные расходы, связанные с использованием npm для установки Corepack, и это, по крайней мере, одна из причин, почему предпочтительным вариантом является использование версии Corepack, которая распространяется вместе с самим Node.js.
См. CONTRIBUTING.md
.
Просто используйте менеджеры пакетов, как обычно. Запустите yarn install
в проектах Yarn, pnpm install
в проектах pnpm и npm
в проектах npm. Corepack перехватит эти вызовы и в зависимости от ситуации:
Если локальный проект настроен для используемого вами менеджера пакетов , Corepack загрузит и кэширует последнюю совместимую версию.
Если локальный проект настроен для другого менеджера пакетов , Corepack попросит вас снова запустить команду, используя правильный менеджер пакетов, что позволит избежать повреждения артефактов установки.
Если локальный проект не настроен для какого-либо менеджера пакетов , Corepack предположит, что вы знаете, что делаете, и будет использовать любую версию менеджера пакетов, которая была закреплена как «известный хороший выпуск». Более подробную информацию можно найти в соответствующем разделе.
Установите менеджер вашего пакета с помощью поля packageManager
в package.json
:
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
Здесь yarn
— это имя менеджера пакетов, указанное в версии 3.2.3
, а также хэш SHA-224 этой версии для проверки. Требуется packageManager@xyz
. Хэш не является обязательным, но настоятельно рекомендуется в целях безопасности. Разрешенными значениями для менеджера пакетов являются yarn
, npm
и pnpm
.
Вы также можете указать URL-адрес файла .js
(который будет интерпретироваться как модуль CommonJS) или файла .tgz
(который будет интерпретироваться как пакет, а поле "bin"
файла package.json
будет использоваться для определить, какой файл использовать в архиве).
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
При запуске Corepack в проектах, в которых не указан поддерживаемый менеджер пакетов, по умолчанию используется набор известных хороших выпусков.
Если для запрошенного менеджера пакетов нет известной хорошей версии, Corepack ищет в реестре npm последнюю доступную версию и кэширует ее для будущего использования.
Известные хорошие выпуски можно обновить в масштабе всей системы с помощью corepack install -g
. Когда Corepack загружает новую версию данного менеджера пакетов по той же основной линии, что и «Заведомо исправный выпуск», он автоматически обновляет ее по умолчанию.
Команды утилиты подробно описаны в следующем разделе.
Либо вы можете использовать сеть при создании образа контейнера, и в этом случае вы просто запустите corepack pack
, чтобы убедиться, что ваш образ включает последнюю удачную версию для указанного менеджера пакетов.
Или вы публикуете свой проект в системе, где сеть недоступна, и в этом случае вы заранее создадите архив менеджера пакетов со своего локального компьютера (используя corepack pack -o
), прежде чем хранить его там, где ваш контейнер сможет получить доступ. (например, в вашем репозитории). После этого останется только запустить corepack install -g --cache-only
для настройки кеша.
corepack [@] [... args]
Эта метакоманда запускает указанный менеджер пакетов в локальной папке. Вы можете использовать его для принудительного запуска установки с заданной версией, что может быть полезно при поиске регрессий.
Обратите внимание, что эти команды по-прежнему проверяют, настроен ли локальный проект для данного менеджера пакетов (т. е. вы не сможете запустить corepack yarn install
в проекте, где поле packageManager
ссылается на pnpm
).
corepack cache clean
Очищает локальный каталог кэша COREPACK_HOME
.
corepack cache clear
Очищает локальный каталог кэша COREPACK_HOME
.
corepack enable [... name]
Вариант | Описание |
---|---|
--install-directory | Добавьте прокладки в указанное место |
Эта команда определит, где установлен Corepack, и создаст рядом с ним прокладки для каждого из указанных менеджеров пакетов (или для всех, если команда вызывается без параметров). Обратите внимание, что прокладки npm не будут установлены, если это явно не запрошено, поскольку в настоящее время npm распространяется вместе с Node.js другими способами.
Если файловая система, в которой находится двоичный corepack
доступна только для чтения, эта команда завершится ошибкой. Обходной путь — добавить двоичные файлы в качестве псевдонимов в файл конфигурации оболочки (например, в ~/.bash_aliases
):
alias Yarn="Corepack Yarn" alias Yarnpkg="corepack Yarnpkg"alias pnpm="corepack pnpm"alias pnpx="corepack pnpx"alias npm="corepack npm"alias npx="corepack npx"
В Windows PowerShell вы можете добавлять функции, используя автоматическую переменную $PROFILE
:
echo "function Yarn { corepack Yarn `$args }" >> $PROFILEecho "function Yarnpkg { corepack Yarnpkg `$args }" >> $PROFILEecho "function pnpm { corepack pnpm `$args }" >> $PROFILEecho "function pnpx { corepack pnpx `$args }" >> $PROFILEecho "function npm { corepack npm `$args }" >> $PROFILEecho "function npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
Вариант | Описание |
---|---|
--install-directory | Снимите прокладки в указанное место. |
Эта команда определит, где установлен Node.js, и удалит оттуда прокладки.
corepack install
Загрузите и установите менеджер пакетов, настроенный в локальном проекте. Эта команда не меняет глобальную версию, используемую при запуске менеджера пакетов вне проекта (если хотите, используйте флаг `-g, --global`).
corepack install <-g,--global> [... name[@]]
Установите выбранные менеджеры пакетов и установите их в систему.
Установленные таким образом менеджеры пакетов будут настроены как новые по умолчанию при вызове соответствующих двоичных файлов вне проектов, определяющих поле packageManager
.
corepack pack [... name[@]]
Вариант | Описание |
---|---|
--json | Распечатывайте выходную папку, а не журналы |
-o,--output | Путь для создания архива |
Загрузите выбранные менеджеры пакетов и сохраните их в архиве, подходящем для использования с corepack install -g
.
corepack use ]>
При запуске эта команда получит последнюю версию, соответствующую предоставленному дескриптору, назначит ее файлу package.json проекта и автоматически выполнит установку.
corepack up
Получите последнюю доступную версию для текущей основной версии менеджера пакетов, используемого в локальном проекте, и обновите проект, чтобы использовать ее.
В отличие от corepack use
эта команда не принимает ни имя менеджера пакетов, ни диапазон версий, поскольку она всегда выбирает последнюю доступную версию из одной и той же основной строки. Если вам нужно перейти на новую основную версию, используйте явный corepack use {name}@latest
(или просто corepack use {name}
).
COREPACK_DEFAULT_TO_LATEST
можно установить значение 0
, чтобы указать Corepack не искать в удаленном реестре последнюю версию выбранного менеджера пакетов и не обновлять последнюю удачную версию при загрузке новой версии той же основной строки.
COREPACK_ENABLE_AUTO_PIN
можно установить значение 0
чтобы Corepack не обновлял поле packageManager
, когда обнаруживает, что в локальном пакете его нет. В общем, мы рекомендуем всегда указывать поле packageManager
(которое вы можете легко настроить с помощью corepack use [name]@[version]
), поскольку это гарантирует, что установки вашего проекта всегда будут детерминированными.
COREPACK_ENABLE_DOWNLOAD_PROMPT
можно установить значение 0
чтобы Corepack не показывал URL-адрес, когда ему необходимо загрузить программное обеспечение, или можно установить значение 1
чтобы URL-адрес отображался. По умолчанию, когда Corepack вызывается явно (например, corepack pnpm …
), ему присваивается значение 0
; когда Corepack вызывается неявно (например, pnpm …
), ему присваивается значение 1
. Если стандартным вводом является TTY и среда CI не обнаружена, Corepack запросит ввод пользователя перед началом загрузки.
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
можно установить значение 1
, чтобы разрешить использование пользовательских URL-адресов для загрузки менеджера пакетов, известного Corepack ( yarn
, npm
и pnpm
).
COREPACK_ENABLE_NETWORK
можно установить значение 0
, чтобы запретить Corepack доступ к сети (в этом случае вы будете нести ответственность за обновление версий менеджера пакетов, которые потребуются для проектов, которые вы будете запускать, используя corepack install -g --cache-only
).
COREPACK_ENABLE_STRICT
можно установить значение 0
, чтобы Corepack не выдавал ошибку, если менеджер пакетов не соответствует тому, который определен для текущего проекта. Это означает, что если пользователь использует менеджер пакетов, указанный в текущем проекте, он будет использовать версию, указанную в поле packageManager
проекта. Но если пользователь использует другой менеджер пакетов, отличный от того, который указан для текущего проекта, он будет использовать общесистемную версию менеджера пакетов.
COREPACK_ENABLE_PROJECT_SPEC
можно установить значение 0
чтобы Corepack не проверял, соответствует ли менеджер пакетов тому, который определен для текущего проекта. Это означает, что он всегда будет использовать общесистемный менеджер пакетов независимо от того, что указано в поле packageManager
проекта.
COREPACK_HOME
можно установить, чтобы определить, где Corepack должен устанавливать менеджеры пакетов. По умолчанию в Windows установлено значение %LOCALAPPDATA%nodecorepack
, а в остальных случаях — $HOME/.cache/node/corepack
.
COREPACK_ROOT
не оказывает функционального влияния на сам Corepack; он автоматически устанавливается в вашей среде с помощью Corepack, когда он обращается к базовым менеджерам пакетов, чтобы они могли обнаружить его присутствие (полезно для таких команд, как yarn init
).
COREPACK_NPM_REGISTRY
устанавливает базовый URL-адрес реестра, используемый при получении менеджеров пакетов из npm. Значение по умолчанию — https://registry.npmjs.org
COREPACK_NPM_TOKEN
устанавливает заголовок авторизации токена носителя при подключении к реестру типов npm.
COREPACK_NPM_USERNAME
и COREPACK_NPM_PASSWORD
для установки заголовка базовой авторизации при подключении к реестру типа npm. Обратите внимание, что обе переменные среды являются обязательными и представлены в виде обычного текста. Если вы хотите отправить пустой пароль, явно задайте для COREPACK_NPM_PASSWORD
пустую строку.
HTTP_PROXY
, HTTPS_PROXY
и NO_PROXY
поддерживаются через node-proxy-agent
.
Для COREPACK_INTEGRITY_KEYS
может быть задана пустая строка или 0
чтобы указать Corepack пропускать проверки целостности, или строка JSON, содержащая пользовательские ключи.
Существует множество проблем с сетью, которые могут возникнуть при выполнении команд corepack
. Что нужно проверить:
Убедитесь, что ваше сетевое соединение активно.
Убедитесь, что хост вашего запроса может быть разрешен вашим DNS; попробуйте использовать curl [URL]
(ipv4) и curl -6 [URL]
(ipv6) из вашей оболочки.
Проверьте настройки прокси-сервера (см. Переменные среды).
См. CONTRIBUTING.md
.
См. LICENSE.md
.