Skip to content

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 :

bash
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 :

bash
corepack install --global

Alternativement, une balise ou une plage peut être utilisée :

bash
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 paquetsNoms de binaires
Yarnyarn , yarnpkg
pnpmpnpm , 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écutez corepack enable pour les rajouter.)