Corepack
Ajouté dans : v16.9.0, v14.19.0
[Stable: 1 - Expérimental]
Stable : 1 Stabilité : 1 - Expérimental
Corepack est un outil expérimental destiné à faciliter la gestion des versions de vos gestionnaires de paquets. Il expose des proxies binaires pour chaque gestionnaire de paquets pris en charge qui, lorsqu’ils sont appelés, identifieront le gestionnaire de paquets configuré pour le projet en cours, le téléchargeront si nécessaire et enfin l’exécuteront.
Bien que Corepack soit distribué avec les installations par défaut de Node.js, les gestionnaires de paquets gérés par Corepack ne font pas partie de la distribution de Node.js et :
- Lors de la première utilisation, Corepack télécharge la dernière version à partir du réseau.
- Les mises à jour requises (liées à des vulnérabilités de sécurité ou autres) ne relèvent pas du projet Node.js. Si nécessaire, les utilisateurs finaux doivent trouver comment mettre à jour par eux-mêmes.
Cette fonctionnalité simplifie deux flux de travail principaux :
- Elle facilite l’intégration des nouveaux contributeurs, car ils n’auront plus à suivre des processus d’installation spécifiques au système uniquement pour avoir le gestionnaire de paquets que vous souhaitez qu’ils utilisent.
- Elle vous permet de vous assurer que tous les membres de votre équipe utiliseront exactement la version du gestionnaire de paquets que vous souhaitez, sans qu’ils aient à la synchroniser manuellement chaque fois que vous devez effectuer une mise à jour.
Flux de travail
Activation de la fonctionnalité
En raison de son statut expérimental, Corepack doit actuellement être explicitement activé pour avoir un effet. Pour ce faire, exécutez corepack enable
, qui configurera les liens symboliques dans votre environnement à côté du binaire node
(et écrasera les liens symboliques existants si nécessaire).
À partir de ce moment, tout appel aux binaires pris en charge fonctionnera sans configuration supplémentaire. Si vous rencontrez un problème, exécutez corepack disable
pour supprimer les proxies de votre système (et envisagez d’ouvrir un problème sur le référentiel de Corepack pour nous en informer).
Configuration d'un paquet
Les proxys Corepack trouveront le fichier package.json
le plus proche dans votre hiérarchie de répertoires actuelle pour extraire sa propriété "packageManager"
.
Si la valeur correspond à un gestionnaire de paquets pris en charge, Corepack s'assurera que tous les appels aux binaires concernés sont exécutés avec la version demandée, en la téléchargeant à la demande si nécessaire, et en abandonnant si elle ne peut pas être récupérée avec succès.
Vous pouvez utiliser corepack use
pour demander à Corepack de mettre à jour votre fichier package.json
local afin d'utiliser le gestionnaire de paquets de votre choix :
corepack use # définit la dernière version 7.x dans le fichier package.json
corepack use yarn@* # définit la dernière version dans le fichier package.json
Mise à niveau des versions globales
Lors de l'exécution en dehors d'un projet existant (par exemple lors de l'exécution de yarn init
), Corepack utilisera par défaut des versions prédéfinies correspondant approximativement aux dernières versions stables de chaque outil. Ces versions peuvent être remplacées en exécutant la commande corepack install
avec la version du gestionnaire de paquets que vous souhaitez définir :
corepack install --global
Alternativement, une balise ou une plage peut être utilisée :
corepack install --global pnpm@*
corepack install --global yarn@stable
Flux de travail hors ligne
De nombreux environnements de production n'ont pas d'accès au réseau. Étant donné que Corepack télécharge généralement les versions du gestionnaire de paquets directement depuis leurs registres, cela peut entrer en conflit avec ces environnements. Pour éviter que cela ne se produise, appelez la commande corepack pack
pendant que vous avez encore un accès au réseau (généralement en même temps que vous préparez votre image de déploiement). Cela garantira que les gestionnaires de paquets requis sont disponibles même sans accès au réseau.
La commande pack
a plusieurs options. Consultez la documentation détaillée de Corepack pour plus d'informations.
Gestionnaires de paquets pris en charge
Les binaires suivants sont fournis par Corepack :
Gestionnaire de paquets | Noms de binaires |
---|---|
Yarn | yarn , yarnpkg |
pnpm | pnpm , pnpx |
Questions fréquentes
Comment Corepack interagit-il avec npm ?
Bien que Corepack puisse prendre en charge npm comme tout autre gestionnaire de paquets, ses shims ne sont pas activés par défaut. Cela a quelques conséquences :
- Il est toujours possible d'exécuter une commande
npm
dans un projet configuré pour être utilisé avec un autre gestionnaire de paquets, car Corepack ne peut pas l'intercepter. - Bien que
npm
soit une option valide dans la propriété"packageManager"
, l'absence de shim entraînera l'utilisation de npm global.
L'exécution de npm install -g yarn
ne fonctionne pas
npm empêche le remplacement accidentel des binaires de Corepack lors d'une installation globale. Pour éviter ce problème, envisagez l'une des options suivantes :
- N'exécutez pas cette commande ; Corepack fournira les binaires du gestionnaire de paquets de toute façon et s'assurera que les versions demandées sont toujours disponibles, il n'est donc pas nécessaire d'installer explicitement les gestionnaires de paquets.
- Ajoutez l'option
--force
ànpm install
; cela indiquera à npm qu'il est acceptable de remplacer les binaires, mais vous effacerez ceux de Corepack dans le processus. (Exécutezcorepack enable
pour les rajouter.)