pnpm — Schneller, platzsparender Paketmanager für Node.js
Praxis-Guide zu pnpm — schneller, platzsparender Paketmanager für Node.js mit content-addressable Store und exzellentem Monorepo-Support.
pnpm ist ein schneller, besonders platzsparender Paketmanager für Node.js – ein direkter Ersatz für npm, der dieselben package.json-Dateien versteht. Statt jede Abhängigkeit pro Projekt neu zu kopieren, legt pnpm sie einmal in einem content-addressable Store ab und verlinkt sie per Hardlink in deine Projekte – das spart enorm Plattenplatz und Installationszeit. Das strikte node_modules-Layout sorgt dafür, dass du nur auf Pakete zugreifst, die du auch wirklich deklariert hast, und bei Monorepos spielt pnpm mit seiner Workspace-Unterstützung seine größte Stärke aus. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag – vom Installieren über das Verwalten von Workspaces bis zur Pflege des Stores.
Installieren & Initialisieren
pnpm init — Erstellt eine neue package.json.
pnpm initpnpm install — Installiert alle Abhängigkeiten aus der package.json.
pnpm installpnpm i — Kurzform für install.
pnpm ipnpm install --frozen-lockfile — Installiert, ohne die Lockfile zu aktualisieren (CI-sicher).
pnpm install --frozen-lockfilepnpm install --prod — Installiert nur Produktiv-Abhängigkeiten.
pnpm install --prodHinzufügen & Entfernen
pnpm add <package> — Fügt ein Paket als Abhängigkeit hinzu.
pnpm add expresspnpm add -D <package> — Fügt es als Entwicklungs-Abhängigkeit hinzu.
pnpm add -D typescriptpnpm add -g <package> — Installiert ein Paket global.
pnpm add -g servepnpm add <package>@<version> — Fügt eine bestimmte Version hinzu.
pnpm add react@18.2.0pnpm remove <package> — Entfernt ein Paket.
pnpm remove lodashpnpm rm <package> — Kurzform für remove.
pnpm rm lodashAktualisieren & Informationen
pnpm update — Aktualisiert alle Pakete innerhalb ihrer Versionsbereiche.
pnpm updatepnpm update --latest — Aktualisiert alle Pakete auf die neuesten Versionen (ignoriert Versionsbereiche).
pnpm update --latestpnpm outdated — Zeigt veraltete Pakete an.
pnpm outdatedpnpm list — Listet installierte Pakete auf.
pnpm list --depth=0pnpm why <package> — Zeigt, warum ein Paket installiert ist.
pnpm why webpackSkripte & Ausführen
pnpm run <script> — Führt ein Skript aus der package.json aus.
pnpm run buildpnpm <script> — Kurzform für gängige Skripte (start, test usw.).
pnpm testpnpm dlx <package> — Führt ein Paket aus, ohne es zu installieren (wie npx).
pnpm dlx create-next-app my-apppnpm exec <command> — Führt einen Befehl aus node_modules/.bin aus.
pnpm exec tsc --versionWorkspaces & Filter
pnpm -r <command> — Führt einen Befehl rekursiv in allen Workspace-Paketen aus.
pnpm -r buildpnpm --filter <name> <command> — Führt einen Befehl in einem bestimmten Workspace-Paket aus.
pnpm --filter @myapp/api buildpnpm --filter '<pattern>' <command> — Führt ihn in Paketen aus, die auf ein Glob-Muster passen.
pnpm --filter './packages/*' testpnpm --filter '...<name>' <command> — Führt ihn in einem Paket und all seinen Abhängigkeiten aus.
pnpm --filter '...@myapp/web' buildpnpm -r --parallel <command> — Führt ihn parallel in allen Paketen aus.
pnpm -r --parallel lintStore & Konfiguration
pnpm store status — Prüft den Store auf veränderte Pakete.
pnpm store statuspnpm store prune — Entfernt nicht referenzierte Pakete aus dem Store.
pnpm store prunepnpm store path — Zeigt den Speicherort des content-addressable Stores an.
pnpm store pathpnpm config list — Zeigt alle Konfigurationseinstellungen an.
pnpm config listpnpm config set <key> <value> — Setzt einen Konfigurationswert.
pnpm config set store-dir /custom/store Fazit
pnpm ist die richtige Wahl, wenn dir Plattenplatz, Installationsgeschwindigkeit und ein sauberes Abhängigkeits-Layout wichtig sind – besonders in Monorepos mit vielen Paketen. Setze in CI-Pipelines konsequent auf pnpm install --frozen-lockfile: So wird exakt die committete pnpm-lock.yaml installiert und ein versehentliches Aktualisieren verhindert, was reproduzierbare Builds garantiert. Behalte zudem die Install-Skripte deiner Abhängigkeiten im Blick – sie sind ein klassischer Supply-Chain-Vektor – und pinne Versionen, statt sie offen mitlaufen zu lassen. Mit pnpm store prune hältst du den geteilten Store schlank, ohne aktiv genutzte Pakete zu verlieren.
Weiterführende Links
- pnpm.io – offizielle Dokumentation, Konfiguration und Workspace-Guide (englisch)
- pnpm – GitHub-Projekt – Quellcode, Releases und Issue-Tracker (englisch)