Qu’est-ce que Corepack et comment l’utiliser ?

11 mai 2026

Qu’est-ce que Corepack et comment l’utiliser ?

Apprenez comment utiliser Corepack, l’outil qui a suscité une polémique dans le monde de Node.js

Si vous avez suivi la polémique autour de l’environnement Node.js et NPM en 2024, vous savez probablement déjà de quoi il s’agit. Mais aujourd’hui, je voudrais vous expliquer ce qu’est Corepack, l’outil qui promet de mettre fin à la guerre entre les gestionnaires de paquets de Node !

Mais d’abord, un peu d’histoire !

À propos de NPM

Depuis la création de Node, NPM a toujours été le gestionnaire de paquets principal. Intégré directement dans le binaire de l’environnement d’exécution et permettant d’installer des paquets de manière extrêmement simple et aisée.

Il existe des théories selon lesquelles le créateur de NPM, Isaac Schlueter, aurait imposé l’adoption de NPM par Node, coagulant ainsi les développeurs pour l’inclure dans le binaire. Ce n’est pas vrai : NPM était un accord entre Isaac et Ryan Dahl pour répondre au besoin d’une communauté croissante d’utilisateurs, celle d’avoir un moyen simple d’installer des paquets externes.

Pendant de nombreuses années, NPM était le seul endroit où l’on pouvait publier et télécharger des paquets pour Node.js, ce qui n’est plus vrai depuis l’arrivée d’autres options comme Yarn et PNPM.

Autrefois, NPM a été intégré à Node même avant qu’il ne devienne une entité commerciale lucrative achetée par GitHub en 2020 et, lorsque GitHub a été acquis par Microsoft, il a également été inclus dans leur catalogue.

Ce que cela a entraîné, c’est que, depuis 2009, NPM détient la plus grande part du marché des gestionnaires de paquets. Cela ne signifie pas nécessairement quelque chose de pratique, mais, en détenant pratiquement le monopole sur la façon dont les paquets sont téléchargés et utilisés, NPM dictait presque comment les paquets devaient être créés, et de nombreuses fonctionnalités de Node ont été conçues en pensant à lui, comme le fait que tout paquet sans préfixe se voit automatiquement attribuer le gestionnaire NPM.

Cette forte intégration du Node a permis à NPM de prendre une avance quasi impassable pour qu’un autre gestionnaire de paquets émerge. Beaucoup ont vu cela comme une forme d’élimination de la concurrence, comme le montre cette intervention de CJ Silverio (ancienne CTO de NPM) :

Mais alors ? Comment se portent les autres gestionnaires ? Le fait est que, lorsque NPM est devenu presque inutilisable en raison de la lenteur d’installation des paquets, d’autres personnes se sont mobilisées pour créer d’autres gestionnaires, tels Yarn et PNPM. À partir de là a commencé la guerre des gestionnaires de paquets. Une guerre qui, tout comme celle des navigateurs, avait et a encore un monopole important sur un système déjà établi.

Mais tout cela peut changer avec Corepack.

Qu’est-ce que Corepack

Corepack est un outil qui est désormais livré avec Node.js depuis la version 14.19, tout comme NPM. Mais au lieu d’être un seul gestionnaire de paquets, il englobe tous les gestionnaires de paquets.

Cet outil permet non seulement de choisir le gestionnaire que vous souhaitez, mais aussi d’installer n’importe lequel d’entre eux sans passer par le long processus de téléchargement du binaire et d’installation globale, etc. Il suffit d’exécuter :

corepack enable && corepack enable npm

Cette commande active Corepack pour l’ensemble des paquets de votre système, globalement. Il en va de même pour Yarn et pnpm. En clair, Corepack est une manière d’utiliser n’importe quel gestionnaire de paquets que vous-même ou votre projet utilisez actuellement, et de dire à ceux qui utiliseront votre projet quel est le gestionnaire préféré (ou obligatoire).

🤖
Comme vous pouvez l’imaginer, la réaction de NPM à cet outil n’a pas pu être autre chose qu’une opposition véhémente à l’adoption du protocole, car cela signifierait que NPM cesserait d’être embarqué dans le binaire de Node.

Comment utiliser Corepack

Pour utiliser Corepack, c’est assez simple : ouvrez votre fichier package.json et créez une nouvelle clé appelée packageManager. Cette clé doit avoir comme valeur yarn, npm ou pnpm, mais pas n’importe quelle valeur ; vous devez également préciser une version du paquet :

{
  // npm
  "packageManager": "[email protected]",
  // pnpm
  "packageManager": "[email protected]",
  // yarn
  "packageManager": "[email protected]"
}

Vous ne pouvez pas utiliser des notations comme pnpm@latest ou yarn@^10.0.0 (ni omettre la version directement avec pnpm). Mais là, la magie opère.

Si vous avez un paquet ou un projet avec la configuration suivante dans votre package.json :

{
  "packageManager": "[email protected]"
}

Et que vous essayez d’exécuter npm install, vous obtiendrez une erreur indiquant :

Usage Error: This project is configured to use pnpm

Maintenant, si vous tapez pnpm install, vous obtiendrez un autre message :

Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.1.4.tgz.

Do you want to continue? [Y/n]

Et la même chose vaut pour Yarn.

Ce que fait Corepack, c’est intercepter les appels vers Yarn et pnpm, mais il ne fait pas de même pour NPM, c’est pourquoi nous avons besoin de corepack enable npm afin qu’il intercepte également les appels à NPM et fasse la même chose.

Dès lors, vous pouvez utiliser n’importe quel gestionnaire de paquets, dans n’importe quel dépôt, à tout moment.

Conclusion

Tandis que cela représente une forme de victoire pour la communauté en offrant davantage d’options de manière plus équitable, il faut rappeler que NPM demeure l’un des outils les plus importants et probablement l’un des principaux piliers qui font de Node ce qu’il est.

Nous devons donc leur être reconnaissants d’avoir mené ce travail depuis 2009 et d’avoir maintenu la communauté et la gestion des paquets avec une telle clarté, afin que tous les utilisateurs puissent prospérer dans un environnement plus simple et plus intuitif.

De plus, il est important de noter qu’en intégrant NPM dans Node, nous gagnons certaines choses. L’une des plus importantes est que nous savons que la version actuelle de Node fonctionnera toujours avec la version installée de NPM, ce qui facilite grandement la gestion des paquets, bien que cela représente un problème plus profond pour l’équipe Node, car une nouvelle version doit être synchronisée entre les deux binaires.

D’un autre côté, utiliser Corepack tel quel n’est pas extrêmement intuitif, donc découpler NPM par défaut pourrait compliquer la vie de ceux qui veulent simplement installer ou utiliser un paquet Node. C’est pourquoi cette polémique n’est pas si simple !

Fabien Delpont

Auteur

Fabien Delpont

Fabien Delpont, développeur et créateur du site Python Doctor.