pnpm
Testing 🟡 MidDéfinition
Gestionnaire de paquets rapide et économe en disque (store global + liens), strict par défaut. Depuis pnpm 10 (janvier 2025), les scripts de cycle de vie des dépendances ne s'exécutent plus à l'installation sans autorisation explicite. pnpm 11 exige Node.js 22+ et bloque par défaut les versions publiées depuis moins d'un jour (minimumReleaseAge). pnpm 12, publié le 26 août 2026, est une réécriture en Rust compatible avec les commandes et le lockfile de la v11.
Analogie
Comme une bibliothèque municipale : un seul exemplaire de chaque livre, et chaque habitant y accède par référence plutôt que par copie.
Exemple de code
pnpm install # installe (scripts des deps bloqués par défaut)
pnpm approve-builds # autoriser explicitement un postinstall
pnpm add express # ajouter une dépendance
pnpm add -D vitest # dépendance de dev
pnpm dlx create-next-app # équivalent de npx
pnpm --filter @app/web test # monorepo
pnpm self-update # mettre pnpm à jour
Cas d'usage
Pour les monorepos et les projets avec beaucoup de dépendances, offrant rapidité et rigueur.
Anti-pattern
Termes liés
Dans l'actu
- 03/10 pnpm 12.9.1 déporte les builds WebAssembly dans un paquet séparé @pnpm/wasm : le paquet npm principal passe d'environ 55 Mo à environ 4 Mo décompressé, et l'exécutable perd ~10 % (45,1 → 40,3 Mo sur macOS arm64). Semaine 40 (2e moitié) · 1er – 4 octobre 2026 →
- 28/09 pnpm 12.8.0 : `pnpm pack` et `pnpm publish` avertissent désormais quand le tarball contient un fichier `.env` ou `.env.*` absent du champ `files` (les modèles comme `.env.example` ne sont pas signalés). Semaine 40 (1re moitié) · 28 – 30 septembre 2026 →
- 18/09 pnpm 12.5.0 fait de Python un écosystème de première classe : pnpm install sélectionne (et télécharge au besoin) l'interpréteur Python par projet, stocké dans le store, et pnpm add accepte les Package URLs multi-écosystèmes (pkg:npm/[email protected], pkg:pypi/[email protected]). Semaine 38 · 14 – 20 septembre 2026 →
- 28/09 pnpm 12.8.0 avertit quand `pnpm pack` ou `pnpm publish` embarque un `.env` absent du champ `files`. Bilan septembre 2026 →
- 26/08 pnpm 12.0 est publié : réécriture de pnpm en Rust, bins globaux conscients de la version de Node/Deno/Bun pinée par le projet, capacité d'installer npm, Yarn et Bun, révisions de registre (tarballs de remplacement), cache distant… Bilan août 2026 →
Fiche mise à jour le 2026-09-27