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
- 20/10 Dependabot prend en charge npm 12, pnpm 11 et 12 et Bun 1.4 (inclus dans GitHub Enterprise Server 3.24). Semaine 43 (1re moitié) · 19 – 21 octobre 2026 →
- 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 →
Fiche mise à jour le 2026-09-27