Node.js : pnpm et Yarn
Trois gestionnaires de paquets se partagent l’écosystème Node.js. Tous lisent le package.json et installent dans node_modules.
| Gestionnaire | Particularité |
|---|---|
| npm | Fourni avec Node.js, aucune installation supplémentaire (commandes) |
| pnpm | Rapide, économe en disque (magasin partagé), gestion stricte des dépendances |
| Yarn | Alternative historique (« classic » 1.x et versions modernes 2+) |
Corepack : ce qui change
Section intitulée « Corepack : ce qui change »Corepack permettait d’activer pnpm ou Yarn à la version voulue par le projet, sans les installer à la main.
Node.js 22 ou 24 : activer Corepack
Section intitulée « Node.js 22 ou 24 : activer Corepack »corepack enable # active les commandes pnpm et yarnpnpm --version # télécharge la version indiquée par « packageManager »Node.js 26 : réinstaller Corepack, ou installer le gestionnaire
Section intitulée « Node.js 26 : réinstaller Corepack, ou installer le gestionnaire »npm install -g corepack # (avec un dossier global personnel, sans sudo)corepack enableInstaller pnpm
Section intitulée « Installer pnpm »curl -fsSL https://get.pnpm.io/install.sh -o pnpm_install.shless pnpm_install.sh # lecture avant exécutionsh pnpm_install.shAutre solution, avec npm :
npm install -g pnpmpnpm --versionpnpm self-update # mise à jourFixer la version utilisée par un projet dans package.json (reprise automatique par Corepack et par la plupart des outils d’intégration continue) :
{ "packageManager": "pnpm@10.0.0"}Remplacer la version par celle réellement utilisée par le projet (pnpm --version).
Commandes équivalentes
Section intitulée « Commandes équivalentes »| Action | npm | pnpm | Yarn |
|---|---|---|---|
| Installer les dépendances | npm install |
pnpm install |
yarn install |
| Installation reproductible | npm ci |
pnpm install --frozen-lockfile |
yarn install --immutable (v2+) |
| Ajouter une dépendance | npm install pkg |
pnpm add pkg |
yarn add pkg |
| Ajouter en développement | npm install -D pkg |
pnpm add -D pkg |
yarn add -D pkg |
| Supprimer | npm uninstall pkg |
pnpm remove pkg |
yarn remove pkg |
| Lancer un script | npm run dev |
pnpm dev |
yarn dev |
| Exécuter un outil sans l’installer | npx outil |
pnpm dlx outil |
yarn dlx outil (v2+) |
| Mettre à jour | npm update |
pnpm update |
yarn upgrade |
| Dépendances obsolètes | npm outdated |
pnpm outdated |
yarn outdated |
| Fichier de verrouillage | package-lock.json |
pnpm-lock.yaml |
yarn.lock |
Le fichier de verrouillage d’un seul gestionnaire doit rester dans le dépôt : ne pas mélanger package-lock.json et pnpm-lock.yaml.
Commandes pnpm utiles
Section intitulée « Commandes pnpm utiles »pnpm install # installe depuis pnpm-lock.yamlpnpm add express # ajoute une dépendancepnpm add -D eslintpnpm update --latest # met à jour vers les dernières versionspnpm why express # pourquoi ce paquet est installépnpm store path # emplacement du magasin partagépnpm store prune # supprime du magasin les paquets inutiliséspnpm approve-builds # autorise l'exécution de scripts d'installation de paquetspnpm n’exécute plus par défaut les scripts d’installation des dépendances : pnpm approve-builds permet de choisir lesquels autoriser (par exemple pour des modules qui compilent du code natif).
- npm : suffisant pour un petit projet, aucune installation supplémentaire.
- pnpm : projets avec beaucoup de dépendances, plusieurs projets sur la même machine, intégration continue rapide.
- Yarn : pour reprendre un projet qui l’utilise déjà.
Un projet n’utilise qu’un gestionnaire ; le champ packageManager le documente.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
pnpm: command not found |
Node.js 26 : installer pnpm (section ci-dessus) ; Node.js 22 ou 24 : corepack enable |
| Un script d’installation de dépendance ne s’exécute pas avec pnpm | pnpm approve-builds |
| Mauvaise version du gestionnaire | Vérifier le champ packageManager et pnpm --version |
| Conflit de verrouillage | Supprimer les fichiers de verrouillage des autres gestionnaires |
Pour aller plus loin
Section intitulée « Pour aller plus loin »- pnpm : pnpm.io
- Yarn : yarnpkg.com