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 init

pnpm install — Installiert alle Abhängigkeiten aus der package.json.

pnpm install

pnpm i — Kurzform für install.

pnpm i

pnpm install --frozen-lockfile — Installiert, ohne die Lockfile zu aktualisieren (CI-sicher).

pnpm install --frozen-lockfile

pnpm install --prod — Installiert nur Produktiv-Abhängigkeiten.

pnpm install --prod

Hinzufügen & Entfernen

pnpm add <package> — Fügt ein Paket als Abhängigkeit hinzu.

pnpm add express

pnpm add -D <package> — Fügt es als Entwicklungs-Abhängigkeit hinzu.

pnpm add -D typescript

pnpm add -g <package> — Installiert ein Paket global.

pnpm add -g serve

pnpm add <package>@<version> — Fügt eine bestimmte Version hinzu.

pnpm add react@18.2.0

pnpm remove <package> — Entfernt ein Paket.

pnpm remove lodash

pnpm rm <package> — Kurzform für remove.

pnpm rm lodash

Aktualisieren & Informationen

pnpm update — Aktualisiert alle Pakete innerhalb ihrer Versionsbereiche.

pnpm update

pnpm update --latest — Aktualisiert alle Pakete auf die neuesten Versionen (ignoriert Versionsbereiche).

pnpm update --latest

pnpm outdated — Zeigt veraltete Pakete an.

pnpm outdated

pnpm list — Listet installierte Pakete auf.

pnpm list --depth=0

pnpm why <package> — Zeigt, warum ein Paket installiert ist.

pnpm why webpack

Skripte & Ausführen

pnpm run <script> — Führt ein Skript aus der package.json aus.

pnpm run build

pnpm <script> — Kurzform für gängige Skripte (start, test usw.).

pnpm test

pnpm dlx <package> — Führt ein Paket aus, ohne es zu installieren (wie npx).

pnpm dlx create-next-app my-app

pnpm exec <command> — Führt einen Befehl aus node_modules/.bin aus.

pnpm exec tsc --version

Workspaces & Filter

pnpm -r <command> — Führt einen Befehl rekursiv in allen Workspace-Paketen aus.

pnpm -r build

pnpm --filter <name> <command> — Führt einen Befehl in einem bestimmten Workspace-Paket aus.

pnpm --filter @myapp/api build

pnpm --filter '<pattern>' <command> — Führt ihn in Paketen aus, die auf ein Glob-Muster passen.

pnpm --filter './packages/*' test

pnpm --filter '...<name>' <command> — Führt ihn in einem Paket und all seinen Abhängigkeiten aus.

pnpm --filter '...@myapp/web' build

pnpm -r --parallel <command> — Führt ihn parallel in allen Paketen aus.

pnpm -r --parallel lint

Store & Konfiguration

pnpm store status — Prüft den Store auf veränderte Pakete.

pnpm store status

pnpm store prune — Entfernt nicht referenzierte Pakete aus dem Store.

pnpm store prune

pnpm store path — Zeigt den Speicherort des content-addressable Stores an.

pnpm store path

pnpm config list — Zeigt alle Konfigurationseinstellungen an.

pnpm config list

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

  • pnpm.io – offizielle Dokumentation, Konfiguration und Workspace-Guide (englisch)
  • pnpm – GitHub-Projekt – Quellcode, Releases und Issue-Tracker (englisch)

Verwandte Kommandos

  • npm – der Standard-Paketmanager von Node.js
  • yarn – alternativer JavaScript-Paketmanager mit Workspaces
  • nvm – verwaltet mehrere Node.js-Versionen parallel