Aller au contenu

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 permettait d’activer pnpm ou Yarn à la version voulue par le projet, sans les installer à la main.

Fenêtre de terminal
corepack enable # active les commandes pnpm et yarn
pnpm --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 »
Fenêtre de terminal
npm install -g corepack # (avec un dossier global personnel, sans sudo)
corepack enable
Fenêtre de terminal
curl -fsSL https://get.pnpm.io/install.sh -o pnpm_install.sh
less pnpm_install.sh # lecture avant exécution
sh pnpm_install.sh

Autre solution, avec npm :

Fenêtre de terminal
npm install -g pnpm
pnpm --version
pnpm self-update # mise à jour

Fixer 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).

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.

Fenêtre de terminal
pnpm install # installe depuis pnpm-lock.yaml
pnpm add express # ajoute une dépendance
pnpm add -D eslint
pnpm update --latest # met à jour vers les dernières versions
pnpm why express # pourquoi ce paquet est installé
pnpm store path # emplacement du magasin partagé
pnpm store prune # supprime du magasin les paquets inutilisés
pnpm approve-builds # autorise l'exécution de scripts d'installation de paquets

pnpm 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.

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