npm (Node Package Manager) wird mit Node.js installiert. Es verwaltet Pakete (Bibliotheken) aus der riesigen Sammlung auf npmjs.com und führt Skripte deines Projekts aus.
Ein Projekt anlegen
mkdir mein-projekt
cd mein-projekt
npm init -y # erzeugt package.json mit StandardwertenDie Datei package.json beschreibt dein Projekt:
{
"name": "mein-projekt",
"version": "1.0.0",
"type": "module",
"scripts": {
"start": "node index.js",
"test": "node --test",
"lint": "eslint ."
},
"dependencies": {
"express": "^4.19.0"
},
"devDependencies": {
"eslint": "^9.0.0"
}
}| Feld | Bedeutung |
|---|---|
type: "module" | .js-Dateien sind ES-Module |
scripts | Kurzbefehle: npm run lint, npm start, npm test |
dependencies | Pakete, die dein Programm zur Laufzeit braucht |
devDependencies | nur für Entwicklung (Tests, Linter, Build) |
Pakete installieren
npm install express # in dependencies
npm install -D eslint # in devDependencies
npm install # alles aus package.json installieren
npm uninstall express
npm update # innerhalb der erlaubten Versionen aktualisieren
npm outdated # veraltete Pakete anzeigen
npx cowsay "Hallo" # Paket einmalig ausführen, ohne zu installierenPakete landen im Ordner node_modules/ (nie in die Versionsverwaltung aufnehmen: .gitignore!). Die Datei package-lock.json hält die genauen Versionen fest und gehört ins Repository, damit alle dieselben Pakete bekommen.
Versionen (SemVer)
Versionsnummern haben die Form MAJOR.MINOR.PATCH, zum Beispiel 4.19.2:
| Änderung | Bedeutung | Beispiel |
|---|---|---|
| PATCH | Fehlerbehebung | 4.19.1 → 4.19.2 |
| MINOR | neue Funktion, kompatibel | 4.19.2 → 4.20.0 |
| MAJOR | Bruch der Kompatibilität | 4.x → 5.0.0 |
In package.json bedeutet ^4.19.0 "ab 4.19.0, aber unter 5.0.0", und ~4.19.0 "ab 4.19.0, aber unter 4.20.0".
Das Paket benutzen
import express from "express";
const app = express();
app.get("/", (req, res) => res.send("Hallo!"));
app.listen(3000);Sicherheit
Jedes Paket ist Code von Fremden, und jedes Paket bringt oft weitere Abhängigkeiten mit.
npm auditzeigt bekannte Sicherheitslücken,npm audit fixbehebt viele davon- Prüfe Pakete vor der Installation: Downloadzahlen, Pflege, Anzahl der Abhängigkeiten
- Achte auf Tippfehler-Namen (Typosquatting)
- Installiere nur, was du wirklich brauchst; manchmal reichen eingebaute Funktionen
- Lockfile committen und in der CI mit
npm ciexakt reproduzierbar installieren
Alternativen zu npm
| Werkzeug | Eigenschaft |
|---|---|
| pnpm | spart Platz durch gemeinsamen Speicher, schnell |
| Yarn | älterer Konkurrent mit ähnlichen Befehlen |
| Bun | Laufzeit und Paketmanager in einem |
Die Pakete sind dieselben, nur die Befehle unterscheiden sich leicht.
Ein kleines Paket selbst bauen
Ergebnis
grosse-apfel-birnen hallo-welt
Merke
package.jsonbeschreibt das Projekt,package-lock.jsonfixiert Versionennpm installinstalliert,npm run <name>führt Skripte aus,npxstartet Werkzeuge- SemVer: MAJOR.MINOR.PATCH;
^erlaubt Minor- und Patch-Updates node_modulesnicht ins Repository- Pakete prüfen,
npm auditnutzen
Aufgabe
Lege ein Projekt mit npm init -y an, installiere ein kleines Paket deiner Wahl, schreibe ein Skript, das es benutzt, und trage in package.json einen start-Befehl ein.