Corepack é um script Node.js com dependência de tempo de execução zero que atua como uma ponte entre os projetos Node.js e os gerenciadores de pacotes com os quais eles devem ser usados durante o desenvolvimento. Em termos práticos, o Corepack permite usar Yarn, npm e pnpm sem precisar instalá-los .
O Corepack é distribuído por padrão com todas as versões recentes do Node.js. Execute corepack enable
para instalar os binários Yarn e pnpm necessários em seu caminho.
Primeiro desinstale seus binários globais Yarn e pnpm (basta deixar o npm). Em geral, você faria isso executando o seguinte comando:
npm desinstalar -g yarn pnpm# Isso deve ser suficiente, mas se você instalou o Yarn sem passar pelo npm, pode# ser mais tedioso - por exemplo, você pode precisar executar `brew desinstalar o fio` também.
Em seguida, instale o Corepack:
npm install -g corepack
Reconhecemos a ironia e a sobrecarga de usar o npm para instalar o Corepack, o que é pelo menos parte do motivo pelo qual a opção preferida é usar a versão do Corepack que é distribuída junto com o próprio Node.js.
Consulte CONTRIBUTING.md
.
Basta usar seus gerenciadores de pacotes como faria normalmente. Execute yarn install
em projetos Yarn, pnpm install
em projetos pnpm e npm
em projetos npm. O Corepack irá capturar essas chamadas e dependendo da situação:
Se o projeto local estiver configurado para o gerenciador de pacotes que você está usando , o Corepack baixará e armazenará em cache a versão compatível mais recente.
Se o projeto local estiver configurado para um gerenciador de pacotes diferente , o Corepack solicitará que você execute o comando novamente usando o gerenciador de pacotes correto - evitando assim a corrupção de seus artefatos de instalação.
Se o projeto local não estiver configurado para nenhum gerenciador de pacotes , o Corepack assumirá que você sabe o que está fazendo e usará qualquer versão do gerenciador de pacotes que tenha sido fixada como "versão válida conhecida". Verifique a seção relevante para mais detalhes.
Defina o gerenciador do seu pacote com o campo packageManager
em package.json
:
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
Aqui, yarn
é o nome do gerenciador de pacotes, especificado na versão 3.2.3
, junto com o hash SHA-224 desta versão para validação. packageManager@xyz
é obrigatório. O hash é opcional, mas fortemente recomendado como prática de segurança. Os valores permitidos para o gerenciador de pacotes são yarn
, npm
e pnpm
.
Você também pode fornecer uma URL para um arquivo .js
(que será interpretado como um módulo CommonJS) ou um arquivo .tgz
(que será interpretado como um pacote, e o campo "bin"
do package.json
será usado para determinar qual arquivo usar no arquivo).
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
Ao executar o Corepack em projetos que não listam um gerenciador de pacotes compatível, o padrão será um conjunto de versões válidas conhecidas.
Se não houver uma versão válida conhecida para o gerenciador de pacotes solicitado, o Corepack procura no registro npm a versão mais recente disponível e armazena-a em cache para uso futuro.
Os lançamentos válidos conhecidos podem ser atualizados em todo o sistema usando corepack install -g
. Quando o Corepack baixa uma nova versão de um determinado gerenciador de pacotes na mesma linha principal do Known Good Release, ele a atualiza automaticamente por padrão.
Os comandos do utilitário detalhados na próxima seção.
Você pode usar a rede ao construir sua imagem de contêiner; nesse caso, você simplesmente executará corepack pack
para garantir que sua imagem inclua a última versão válida para o gerenciador de pacotes especificado.
Ou você está publicando seu projeto em um sistema onde a rede não está disponível; nesse caso, você gerará preventivamente um arquivo do gerenciador de pacotes a partir do seu computador local (usando corepack pack -o
) antes de armazená-lo em algum lugar onde seu contêiner possa acessar (por exemplo, dentro do seu repositório). Depois disso, será apenas uma questão de executar corepack install -g --cache-only
para configurar o cache.
corepack [@] [... args]
Este metacomando executa o gerenciador de pacotes especificado na pasta local. Você pode usá-lo para forçar a execução de uma instalação com uma determinada versão, o que pode ser útil ao procurar regressões.
Observe que esses comandos ainda verificam se o projeto local está configurado para o gerenciador de pacotes fornecido (ou seja, você não poderá executar corepack yarn install
em um projeto onde o campo packageManager
faz referência pnpm
).
corepack cache clean
Limpa o diretório de cache local COREPACK_HOME
.
corepack cache clear
Limpa o diretório de cache local COREPACK_HOME
.
corepack enable [... name]
Opção | Descrição |
---|---|
--install-directory | Adicione os calços ao local especificado |
Este comando detectará onde o Corepack está instalado e criará correções próximas a ele para cada um dos gerenciadores de pacotes especificados (ou todos eles se o comando for chamado sem parâmetros). Observe que os shims do npm não serão instalados a menos que sejam explicitamente solicitados, já que o npm é atualmente distribuído com o Node.js por outros meios.
Se o sistema de arquivos onde o binário corepack
está localizado for somente leitura, este comando falhará. Uma solução alternativa é adicionar os binários como alias em seu arquivo de configuração do shell (por exemplo, em ~/.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"
No Windows PowerShell, você pode adicionar funções usando a variável automática $PROFILE
:
echo "função fio { corepack fio `$args }" >> $PROFILEecho "função fiopkg { corepack fiopkg `$args }" >> $PROFILEecho "função pnpm { corepack pnpm `$args }" >> $PROFILEecho "função pnpx { corepack pnpx `$args }" >> $PROFILEecho "função npm { corepack npm `$args }" >> $PROFILEecho "função npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
Opção | Descrição |
---|---|
--install-directory | Remova os calços para o local especificado |
Este comando detectará onde o Node.js está instalado e removerá os calços de lá.
corepack install
Baixe e instale o gerenciador de pacotes configurado no projeto local. Este comando não altera a versão global usada ao executar o gerenciador de pacotes de fora do projeto (use o sinalizador `-g,--global` se desejar fazer isso).
corepack install <-g,--global> [... name[@]]
Instale os gerenciadores de pacotes selecionados e instale-os no sistema.
Os gerenciadores de pacotes assim instalados serão configurados como o novo padrão ao chamar seus respectivos binários fora dos projetos que definem o campo packageManager
.
corepack pack [... name[@]]
Opção | Descrição |
---|---|
--json | Imprima a pasta de saída em vez dos registros |
-o,--output | Caminho onde gerar o arquivo |
Baixe os gerenciadores de pacotes selecionados e armazene-os em um tarball adequado para uso com corepack install -g
.
corepack use ]>
Quando executado, este comando recuperará a versão mais recente que corresponde ao descritor fornecido, atribuí-la ao arquivo package.json do projeto e executará automaticamente uma instalação.
corepack up
Recuperar a versão mais recente disponível para a linha de lançamento principal atual do gerenciador de pacotes usado no projeto local e atualizar o projeto para usá-la.
Ao contrário corepack use
este comando não usa um nome de gerenciador de pacotes nem um intervalo de versão, pois sempre selecionará a versão mais recente disponível na mesma linha principal. Caso você precise atualizar para uma nova versão principal, use uma chamada explícita corepack use {name}@latest
(ou simplesmente corepack use {name}
).
COREPACK_DEFAULT_TO_LATEST
pode ser definido como 0
para instruir o Corepack a não procurar no registro remoto a versão mais recente do gerenciador de pacotes selecionado e a não atualizar a última versão válida ao baixar uma nova versão da mesma linha principal.
COREPACK_ENABLE_AUTO_PIN
pode ser definido como 0
para evitar que o Corepack atualize o campo packageManager
quando detectar que o pacote local não o lista. Em geral, recomendamos sempre listar um campo packageManager
(que você pode definir facilmente através corepack use [name]@[version]
), pois isso garante que as instalações do seu projeto sejam sempre determinísticas.
COREPACK_ENABLE_DOWNLOAD_PROMPT
pode ser definido como 0
para evitar que o Corepack mostre a URL quando precisar baixar software, ou pode ser definido como 1
para que a URL seja mostrada. Por padrão, quando o Corepack é chamado explicitamente (por exemplo, corepack pnpm …
), ele é definido como 0
; quando o Corepack é chamado implicitamente (por exemplo, pnpm …
), ele é definido como 1
. Quando a entrada padrão é um TTY e nenhum ambiente de CI é detectado, o Corepack solicitará a entrada do usuário antes de iniciar o download.
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
pode ser definido como 1
para permitir o uso de URLs personalizados para carregar um gerenciador de pacotes conhecido pelo Corepack ( yarn
, npm
e pnpm
).
COREPACK_ENABLE_NETWORK
pode ser definido como 0
para evitar que o Corepack acesse a rede (nesse caso você será responsável por hidratar as versões do gerenciador de pacotes que serão necessárias para os projetos que você executará, usando corepack install -g --cache-only
).
COREPACK_ENABLE_STRICT
pode ser definido como 0
para evitar que o Corepack gere erros se o gerenciador de pacotes não corresponder ao definido para o projeto atual. Isso significa que se um usuário estiver usando o gerenciador de pacotes especificado no projeto atual, ele usará a versão especificada pelo campo packageManager
do projeto. Mas se o usuário estiver usando outro gerenciador de pacotes diferente daquele especificado para o projeto atual, ele usará a versão do gerenciador de pacotes para todo o sistema.
COREPACK_ENABLE_PROJECT_SPEC
pode ser definido como 0
para evitar que o Corepack verifique se o gerenciador de pacotes corresponde ao definido para o projeto atual. Isso significa que ele sempre usará o gerenciador de pacotes de todo o sistema, independentemente do que estiver sendo especificado no campo packageManager
do projeto.
COREPACK_HOME
pode ser definido para definir onde o Corepack deve instalar os gerenciadores de pacotes. Por padrão, ele é definido como %LOCALAPPDATA%nodecorepack
no Windows e como $HOME/.cache/node/corepack
em todos os outros lugares.
COREPACK_ROOT
não tem impacto funcional no próprio Corepack; ele é configurado automaticamente em seu ambiente pelo Corepack quando é enviado aos gerenciadores de pacotes subjacentes, para que eles possam detectar sua presença (útil para comandos como yarn init
).
COREPACK_NPM_REGISTRY
define o URL base do registro usado ao recuperar gerenciadores de pacotes do npm. O valor padrão é https://registry.npmjs.org
COREPACK_NPM_TOKEN
define um cabeçalho de autorização de token de portador ao conectar-se a um registro do tipo npm.
COREPACK_NPM_USERNAME
e COREPACK_NPM_PASSWORD
para definir um cabeçalho de autorização básico ao conectar-se a um registro do tipo npm. Observe que ambas as variáveis de ambiente são obrigatórias e estão em texto simples. Se você deseja enviar uma senha vazia, defina explicitamente COREPACK_NPM_PASSWORD
como uma string vazia.
HTTP_PROXY
, HTTPS_PROXY
e NO_PROXY
são suportados por meio de node-proxy-agent
.
COREPACK_INTEGRITY_KEYS
pode ser definido como uma string vazia ou 0
para instruir o Corepack a ignorar as verificações de integridade ou como uma string JSON contendo chaves personalizadas.
Há uma grande variedade de problemas de rede que podem ocorrer durante a execução de comandos corepack
. Coisas para verificar:
Certifique-se de que sua conexão de rede esteja ativa.
Certifique-se de que o host da sua solicitação possa ser resolvido pelo seu DNS; tente usar curl [URL]
(ipv4) e curl -6 [URL]
(ipv6) do seu shell.
Verifique suas configurações de proxy (consulte Variáveis de ambiente).
Consulte CONTRIBUTING.md
.
Consulte LICENSE.md
.