Was ist pnpm? Eine Gebrauchsanweisung
Im Bereich der Frontend-Entwicklung sind Paketmanager Werkzeuge, mit denen wir täglich umgehen. Von den frühesten npm über das spätere yarn bis hin zum heute als "fortschrittlichsten" gefeierten pnpm dreht sich die Entwicklung der Werkzeuge immer um drei Kernmetriken: Geschwindigkeit, Speichereffizienz und Abhängigkeitssicherheit.
Wird gerendert...
Im Bereich der Frontend-Entwicklung sind Paketmanager Werkzeuge, mit denen wir täglich umgehen. Vom allerersten npm über yarn bis hin zum heute als "fortschrittlichsten" gefeierten **pnpm** dreht sich die Weiterentwicklung der Werkzeuge immer um drei Kernmetriken: **Geschwindigkeit, Platzersparnis, Abhängigkeitssicherheit**. Dieser Artikel führt Sie in pnpm ein und zeigt Ihnen, wie Sie es verwenden. ## Was ist pnpm? **pnpm** (Performant npm) ist ein extrem schneller und speichereffizienter Paketmanager. ### Kernvorteile - **Geschwindigkeit (Performance):** pnpm ist viel schneller als npm und yarn (oft mehr als doppelt so schnell). Dies liegt an seinem einzigartigen Installationsmechanismus, der die wiederholte Kopie großer Mengen von Dateien vermeidet. - **Platzersparnis (Effizienz):** Dies ist der Killer-Vorteil von pnpm. Es verwendet **Content-addressable Storage**. Wenn Sie 10 Projekte haben, die alle die gleiche Version von `lodash` verwenden, wird diese nur einmal auf der Festplatte gespeichert. - **Perfekte Lösung für "Geisterabhängigkeiten" (Sicherheit):** Herkömmliche npm/yarn "flachen" Abhängigkeiten ab, was dazu führt, dass Sie in Ihrem Code auf Pakete zugreifen können, die Sie nicht in `package.json` deklariert haben. pnpm verwendet **Symbolische Links (Symlinks)**, um einen strengen Abhängigkeitsbaum zu erstellen, auf den nur deklarierte Pakete zugreifen können. ## Die "richtige Art", pnpm zu verwenden ### pnpm installieren Wenn Sie Node.js bereits installiert haben, wird empfohlen, es direkt über das Kernverwaltungstool zu installieren: ```Bash corepack enable corepack prepare pnpm@latest --activate ``` Oder global mit npm installieren: `npm install -g pnpm` ### Tabelle der gängigen Befehle | **Operation** | **npm Befehl** | **pnpm Befehl** | | ---------------- | --------------------- | ------------------------------- | | Abhängigkeiten installieren | `npm install` | `pnpm install` (oder `pnpm i`) | | Paket hinzufügen | `npm install <pkg>` | `pnpm add <pkg>` | | Entwicklungspakete hinzufügen | `npm i <pkg> -D` | `pnpm add <pkg> -D` | | Paket entfernen | `npm uninstall <pkg>` | `pnpm remove <pkg>` | | Skript ausführen | `npm run <script>` | `pnpm <script>` (kein "run" nötig) | | Global installieren | `npm install -g` | `pnpm add -g` | ### Node-Versionen verwalten pnpm verfügt über integrierte Versionsverwaltungsfunktionen, sodass Sie nvm nicht einmal installieren müssen: - Spezifische Version installieren: `pnpm env use --global 20` ## Fortgeschritten ### Speicherpfad einstellen (Store Path) Die Kernlogik von pnpm besteht darin, alle Pakete in einem globalen `store` zu speichern und sie dann über Hardlinks in die `node_modules` der einzelnen Projekte zu verknüpfen. Standardmäßig befindet sich der Store im Stammverzeichnis des aktuellen Laufwerks. Wenn Sie den Speicherort anpassen möchten (z. B. aus Sorge um den Speicherplatz auf Laufwerk C): ```Bash # Aktuellen Store-Pfad anzeigen pnpm store path # Benutzerdefinierten Pfad festlegen pnpm config set store-dir D:\.pnpm-store ``` ### Monorepo Best Practices pnpm ist derzeit die beste Wahl für die Verwaltung von **Monorepos** (Multi-Package-Management-Projekten). Sie müssen lediglich eine `pnpm-workspace.yaml`-Datei im Stammverzeichnis erstellen: ```yaml packages: - 'packages/*' - 'apps/*' ``` Dann können Sie Abhängigkeiten projektübergreifend installieren: `pnpm add lodash --filter @my-app/web`. ### Unterschiede zu npm/yarn - **npm/yarn (v1):** Verwendet eine flache Struktur, die leicht zu Abhängigkeitskonflikten führt und viel Speicherplatz beansprucht. - **yarn (v2/v3) Berry:** Führt den PnP-Modus ein, der zwar schnell ist, aber größere Kompatibilitätsprobleme aufweist. - **pnpm:** Hat den Mittelweg gefunden. Es behält die physische Struktur von `node_modules` bei (durch Soft- und Hardlinks), was eine hohe Kompatibilität gewährleistet, und erreicht gleichzeitig eine extreme Leistung. ## Migration alter Projekte zu pnpm Führen Sie die folgenden Schritte im Stammverzeichnis Ihres Projekts aus: 1. **pnpm installieren** (falls noch nicht geschehen): ```Bash npm install -g pnpm ``` 2. **pnpm-Lockdatei generieren**: Führen Sie den folgenden Befehl aus. Er liest automatisch Ihre vorhandene `package-lock.json` oder `yarn.lock` und generiert `pnpm-lock.yaml`, ohne Pakete herunterzuladen. ```Bash pnpm import ``` 3. **Alte Dateien löschen**: Um das Projekt sauber zu halten, löschen Sie die alten `node_modules` und die alten Lockdateien. ```Bash # Windows-Benutzer können den del-Befehl verwenden oder manuell löschen rm -rf node_modules package-lock.json yarn.lock ``` 4. **Abhängigkeiten neu installieren**: Verwenden Sie pnpm, um den letzten Schritt abzuschließen: ```Bash pnpm install ```
Kommentar
Melde dich an, um Kommentare anzuzeigen und zu veröffentlichen
Zur Anmeldung