EMZETT.
Login

Kurz: 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.

Teil des Kurses JavaScript

Kapitel 35 von 40 im Kurs JavaScript. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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 Standardwerten

Die 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"
  }
}
FeldBedeutung
type: "module".js-Dateien sind ES-Module
scriptsKurzbefehle: npm run lint, npm start, npm test
dependenciesPakete, die dein Programm zur Laufzeit braucht
devDependenciesnur 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 installieren

Pakete 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:

ÄnderungBedeutungBeispiel
PATCHFehlerbehebung4.19.1 → 4.19.2
MINORneue Funktion, kompatibel4.19.2 → 4.20.0
MAJORBruch der Kompatibilität4.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 audit zeigt bekannte Sicherheitslücken, npm audit fix behebt 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 ci exakt reproduzierbar installieren

Alternativen zu npm

WerkzeugEigenschaft
pnpmspart Platz durch gemeinsamen Speicher, schnell
Yarnälterer Konkurrent mit ähnlichen Befehlen
BunLaufzeit und Paketmanager in einem

Die Pakete sind dieselben, nur die Befehle unterscheiden sich leicht.

Ein kleines Paket selbst bauen

// Das Muster eines Moduls, das du veröffentlichen könntest
const slugify = (text) =>
  text
    .toLowerCase()
    .normalize("NFD").replace(/[̀-ͯ]/g, "")
    .replace(/ß/g, "ss")
    .replace(/[^a-z0-9]+/g, "-")
    .replace(/^-+|-+$/g, "");
 
console.log(slugify("Größe: Äpfel & Birnen!"));
console.log(slugify("  Hallo   Welt  "));

Ausgabe:

grosse-apfel-birnen
hallo-welt

Merke

  • package.json beschreibt das Projekt, package-lock.json fixiert Versionen
  • npm install installiert, npm run <name> führt Skripte aus, npx startet Werkzeuge
  • SemVer: MAJOR.MINOR.PATCH; ^ erlaubt Minor- und Patch-Updates
  • node_modules nicht ins Repository
  • Pakete prüfen, npm audit nutzen

Übungsaufgabe

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.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Node.js Grundlagen

Weiter: Code testen

Alle Kapitel: JavaScript im Überblick