Skip to content

Corepack

Aggiunto in: v16.9.0, v14.19.0

[Stabile: 1 - Sperimentale]

Stabile: 1 Stabilità: 1 - Sperimentale

Corepack è uno strumento sperimentale per aiutare nella gestione delle versioni dei tuoi gestori di pacchetti. Espone proxy binari per ogni gestore di pacchetti supportato che, quando chiamato, identificherà quale gestore di pacchetti è configurato per il progetto corrente, lo scaricherà se necessario e infine lo eseguirà.

Nonostante Corepack sia distribuito con le installazioni predefinite di Node.js, i gestori di pacchetti gestiti da Corepack non fanno parte della distribuzione di Node.js e:

  • Al primo utilizzo, Corepack scarica l'ultima versione dalla rete.
  • Qualsiasi aggiornamento richiesto (relativo a vulnerabilità di sicurezza o altro) è fuori dalla portata del progetto Node.js. Se necessario, gli utenti finali devono capire come aggiornare da soli.

Questa funzionalità semplifica due flussi di lavoro principali:

  • Facilita l'onboarding di nuovi collaboratori, poiché non dovranno più seguire processi di installazione specifici del sistema solo per avere il gestore di pacchetti che desideri.
  • Ti consente di assicurarti che tutti nel tuo team utilizzino esattamente la versione del gestore di pacchetti che intendi, senza che debbano sincronizzarla manualmente ogni volta che devi apportare un aggiornamento.

Flussi di lavoro

Abilitazione della funzionalità

A causa del suo stato sperimentale, Corepack deve attualmente essere esplicitamente abilitato per avere effetto. Per fare ciò, esegui corepack enable, che imposterà i collegamenti simbolici nel tuo ambiente accanto al binario node (e sovrascriverà i collegamenti simbolici esistenti se necessario).

Da questo punto in poi, qualsiasi chiamata ai binari supportati funzionerà senza ulteriori impostazioni. In caso di problemi, esegui corepack disable per rimuovere i proxy dal tuo sistema (e prendi in considerazione l'apertura di un problema sul repository Corepack per farcelo sapere).

Configurazione di un pacchetto

I proxy di Corepack troveranno il file package.json più vicino nella gerarchia di directory corrente per estrarre la sua proprietà "packageManager".

Se il valore corrisponde a un gestore di pacchetti supportato, Corepack si assicurerà che tutte le chiamate ai binari pertinenti vengano eseguite rispetto alla versione richiesta, scaricandola su richiesta se necessario e interrompendo se non può essere recuperata correttamente.

Puoi usare corepack use per chiedere a Corepack di aggiornare il tuo package.json locale per usare il gestore di pacchetti che preferisci:

bash
corepack use  # imposta l'ultima versione 7.x nel package.json
corepack use yarn@* # imposta l'ultima versione nel package.json

Aggiornamento delle versioni globali

Quando viene eseguito al di fuori di un progetto esistente (ad esempio quando si esegue yarn init), Corepack utilizzerà di default versioni predefinite che corrispondono approssimativamente alle ultime versioni stabili di ogni strumento. Queste versioni possono essere sovrascritte eseguendo il comando corepack install insieme alla versione del gestore di pacchetti che desideri impostare:

bash
corepack install --global

In alternativa, è possibile utilizzare un tag o un intervallo:

bash
corepack install --global pnpm@*
corepack install --global yarn@stable

Workflow offline

Molti ambienti di produzione non hanno accesso alla rete. Poiché Corepack di solito scarica le versioni del gestore di pacchetti direttamente dai loro registri, può entrare in conflitto con tali ambienti. Per evitare che ciò accada, chiama il comando corepack pack mentre hai ancora accesso alla rete (in genere contemporaneamente alla preparazione dell'immagine di distribuzione). Ciò garantirà che i gestori di pacchetti richiesti siano disponibili anche senza accesso alla rete.

Il comando pack ha varie flag. Consulta la documentazione dettagliata di Corepack per ulteriori informazioni.

Gestori di pacchetti supportati

I seguenti binari sono forniti tramite Corepack:

Gestore di pacchettiNomi binari
Yarnyarn , yarnpkg
pnpmpnpm , pnpx

Domande comuni

Come interagisce Corepack con npm?

Sebbene Corepack possa supportare npm come qualsiasi altro gestore di pacchetti, i suoi shim non sono abilitati per impostazione predefinita. Questo ha alcune conseguenze:

  • È sempre possibile eseguire un comando npm all'interno di un progetto configurato per essere utilizzato con un altro gestore di pacchetti, poiché Corepack non può intercettarlo.
  • Sebbene npm sia un'opzione valida nella proprietà "packageManager", la mancanza di shim farà sì che venga utilizzato l'npm globale.

L'esecuzione di npm install -g yarn non funziona

npm impedisce di sovrascrivere accidentalmente i binari di Corepack durante un'installazione globale. Per evitare questo problema, prendi in considerazione una delle seguenti opzioni:

  • Non eseguire questo comando; Corepack fornirà comunque i binari del gestore di pacchetti e si assicurerà che le versioni richieste siano sempre disponibili, quindi non è necessario installare esplicitamente i gestori di pacchetti.
  • Aggiungi il flag --force a npm install; questo dirà a npm che va bene sovrascrivere i binari, ma cancellerai quelli di Corepack nel processo. (Esegui corepack enable per aggiungerli di nuovo.)