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 la gestione delle versioni dei gestori di pacchetti. Espone dei proxy binari per ogni gestore di pacchetti supportato che, quando chiamato, identificherà il 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) non rientra nell'ambito del progetto Node.js. Se necessario, gli utenti finali devono capire come aggiornare autonomamente.

Questa funzionalità semplifica due flussi di lavoro principali:

  • Facilita l'onboarding dei nuovi collaboratori, poiché non dovranno più seguire processi di installazione specifici per il sistema solo per avere il gestore di pacchetti desiderato.
  • Consente di garantire che tutti nel tuo team utilizzino esattamente la versione del gestore di pacchetti che intendi, senza che debbano sincronizzarlo manualmente ogni volta che è necessario apportare un aggiornamento.

Flussi di lavoro

Abilitazione della funzionalità

A causa del suo stato sperimentale, Corepack deve 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 momento in poi, qualsiasi chiamata ai binari supportati funzionerà senza ulteriori configurazioni. In caso di problemi, esegui corepack disable per rimuovere i proxy dal sistema (e valuta di aprire un problema nel repository di Corepack per farcelo sapere).

Configurazione di un pacchetto

I proxy di Corepack troveranno il file package.json più vicino nella gerarchia della tua 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 sulla versione richiesta, scaricandola su richiesta se necessario e interrompendosi se non può essere recuperata con successo.

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

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 si esegue al di fuori di un progetto esistente (ad esempio quando si esegue yarn init), Corepack per impostazione predefinita utilizzerà versioni predefinite che corrispondono approssimativamente alle ultime versioni stabili di ciascuno 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

Flusso di lavoro 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 nello stesso momento in cui prepari la tua immagine di distribuzione). Ciò garantirà che i gestori di pacchetti richiesti siano disponibili anche senza accesso alla rete.

Il comando pack ha vari flag. Consulta la documentazione dettagliata di Corepack per maggiori informazioni.

Gestori di pacchetti supportati

I seguenti binari sono forniti tramite Corepack:

Gestore di pacchettiNomi dei binari
Yarnyarn , yarnpkg
pnpmpnpm , pnpx

Domande comuni

Come interagisce Corepack con npm?

Sebbene Corepack potrebbe 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, considera una delle seguenti opzioni:

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