# npm — Der Paketmanager für Node.js

> Praxis-Guide zu npm — Pakete installieren, package.json und Lockfiles verwalten, Skripte ausführen und Abhängigkeiten sicher aktualisieren.

Source: https://www.jpkc.com/db/cheatsheets/package-managers/npm/

<!-- PROSE:intro -->
npm ist der Standard-Paketmanager für Node.js und wird bei jeder Node-Installation gleich mitgeliefert. Es liest die `package.json` deines Projekts, löst Abhängigkeiten auf und hält sie über die `package-lock.json` reproduzierbar fest – die installierten Pakete bezieht es aus der zentralen npm-Registry. Darüber hinaus führt npm die in der `package.json` definierten Skripte aus, sodass Build, Test und Start eines Projekts mit einem einzigen Befehl laufen. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag, vom ersten `npm init` bis zum Veröffentlichen eines eigenen Pakets.
<!-- PROSE:intro:end -->

## Paketverwaltung

`npm init` — Erstellt interaktiv eine neue package.json-Datei.

`npm init -y` — Erstellt eine package.json mit Standardwerten ohne Rückfragen.

`npm install` — Installiert alle in package.json gelisteten Abhängigkeiten.

`npm install <package>` — Installiert ein Paket und fügt es zu den dependencies hinzu.

```bash
npm install express
```

`npm install -D <package>` — Installiert ein Paket als Entwicklungsabhängigkeit (devDependency).

```bash
npm install -D jest
```

`npm install -g <package>` — Installiert ein Paket global auf deinem System.

```bash
npm install -g typescript
```

`npm install <package>@<version>` — Installiert eine bestimmte Version eines Pakets.

```bash
npm install react@18.2.0
```

`npm uninstall <package>` — Entfernt ein Paket und aktualisiert die package.json.

```bash
npm uninstall express
```

`npm update` — Aktualisiert alle Pakete auf die neueste Version innerhalb des semver-Bereichs.

`npm update <package>` — Aktualisiert ein bestimmtes Paket.

```bash
npm update express
```

## Informationen & Auflisten

`npm list` — Zeigt installierte Pakete als Abhängigkeitsbaum an.

`npm list --depth=0` — Zeigt nur die obersten installierten Pakete an.

`npm list -g --depth=0` — Zeigt global installierte Pakete an.

`npm outdated` — Prüft, für welche Pakete neuere Versionen verfügbar sind.

`npm view <package>` — Zeigt detaillierte Infos zu einem Paket aus der Registry an.

```bash
npm view express
```

`npm view <package> versions` — Listet alle verfügbaren Versionen eines Pakets auf.

```bash
npm view express versions
```

`npm search <keyword>` — Durchsucht die npm-Registry nach Paketen.

```bash
npm search markdown parser
```

## Skripte

`npm run <script>` — Führt ein in package.json definiertes Skript aus.

```bash
npm run build
```

`npm start` — Führt das start-Skript aus (Kurzform für npm run start).

`npm test` — Führt das test-Skript aus (Kurzform für npm run test).

`npm run` — Listet alle verfügbaren Skripte im aktuellen Paket auf.

## Konfiguration

`npm config list` — Zeigt alle npm-Konfigurationseinstellungen an.

`npm config set <key> <value>` — Setzt einen Konfigurationswert.

```bash
npm config set registry https://registry.npmjs.org/
```

`npm config get <key>` — Liest einen Konfigurationswert aus.

```bash
npm config get registry
```

`npm config delete <key>` — Löscht einen Konfigurationswert.

```bash
npm config delete proxy
```

## Cache & Aufräumen

`npm cache clean --force` — Leert den npm-Cache. Nützlich, wenn sich Pakete nicht installieren lassen.

`npm cache verify` — Prüft die Integrität des Caches.

`npm prune` — Entfernt überzählige Pakete, die nicht in package.json stehen.

`npm dedupe` — Reduziert Duplikate, indem Abhängigkeiten im Baum nach oben verschoben werden.

## npx

`npx <command>` — Führt eine Paket-Binärdatei aus, ohne sie global zu installieren.

```bash
npx create-react-app my-app
```

`npx <package>@<version> <command>` — Führt eine bestimmte Version eines Pakets aus.

```bash
npx typescript@5.0 tsc --init
```

`npx -p <package> <command>` — Installiert ein Paket temporär und führt einen Befehl daraus aus.

```bash
npx -p typescript tsc --version
```

## Audit & Sicherheit

`npm audit` — Prüft installierte Pakete auf bekannte Sicherheitslücken.

`npm audit fix` — Behebt verwundbare Abhängigkeiten automatisch, wo möglich.

`npm audit fix --force` — Behebt Schwachstellen und erlaubt dabei auch Major-Versionssprünge.

`npm audit --json` — Gibt die Audit-Ergebnisse als JSON zur maschinellen Verarbeitung aus.

## Veröffentlichen

`npm login` — Authentifiziert dich bei der npm-Registry.

`npm publish` — Veröffentlicht das aktuelle Paket in der npm-Registry.

`npm publish --access public` — Veröffentlicht ein scoped-Paket als öffentlich.

```bash
npm publish --access public
```

`npm version <type>` — Erhöht die Paketversion (patch, minor oder major).

```bash
npm version patch
```

`npm unpublish <package>@<version>` — Entfernt eine bestimmte Version aus der Registry.

```bash
npm unpublish my-package@1.0.0
```

`npm pack` — Erstellt ein Tarball des Pakets zum lokalen Testen.

<!-- PROSE:outro -->
## Fazit

npm ist auf jedem Node.js-System bereits vorhanden und deckt den kompletten Lebenszyklus eines JavaScript-Projekts ab – von der ersten Abhängigkeit bis zum veröffentlichten Paket. Beim Thema Sicherheit lohnt sich Vorsicht, denn die Lieferkette ist ein beliebtes Angriffsziel: `npm install` führt die Install-Skripte fremder Pakete aus, weshalb du bei nicht vertrauenswürdigen Quellen `--ignore-scripts` setzen solltest. Für reproduzierbare Builds nimmst du in CI und Deployment besser `npm ci` statt `npm install` – es installiert exakt das, was in der `package-lock.json` steht. Prüfe Abhängigkeiten regelmäßig mit `npm audit`, pinne Versionen, wo Reproduzierbarkeit zählt, und installiere globale Pakete nicht mit `sudo` – ein Node-Versionmanager hält Rechte und PATH sauberer.

## Weiterführende Links

- [npm Docs](https://docs.npmjs.com/) – offizielle Dokumentation zu npm-CLI, package.json und Registry (englisch)
- [npmjs.com](https://www.npmjs.com/) – die öffentliche npm-Registry zum Suchen und Veröffentlichen von Paketen (englisch)
- [Node.js](https://nodejs.org/de/) – die Laufzeitumgebung, die npm mitbringt
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apk](https://www.jpkc.com/db/cheatsheets/package-managers/apk/) – Paketmanager von Alpine Linux
- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – komfortable Paketverwaltung für Debian und Ubuntu
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – klassisches Paket-Werkzeug für Debian und Ubuntu

