Skip to content

Kapitel 5: npm Paketverwaltung

🎯 Lernziele

In diesem Kapitel lernen Sie:

  • ✅ npm (Node Package Manager) Grundlagen
  • ✅ Wichtige npm-Befehle (init, install, uninstall, run)
  • package.json verstehen
  • package-lock.json verstehen
  • ✅ Empfohlene Drittanbieter-Pakete
  • ✅ Praxis: Pakete installieren und verwenden

5.1 Was ist npm?

📦 Definition

npm (Node Package Manager) ist der größte Software-Register der Welt. Es ermöglicht:

  • ✅ Installation von Drittanbieter-Paketen
  • ✅ Verwaltung von Projektabhängigkeiten
  • ✅ Ausführung von Skripten
  • ✅ Veröffentlichung eigener Pakete

📊 Statistik

npm-Register:
├── Über 2 Millionen Pakete
├── Über 30 Milliarden Downloads pro Woche
└── Größtes Ökosystem der Welt

5.2 Wichtige npm-Befehle

📝 Grundeinstellung: Projekt initialisieren

bash
# Interaktive Initialisierung (Fragen werden gestellt)
npm init

# Schnelle Initialisierung (Standardwerte)
npm init -y

# Erweiterte Initialisierung
npm init --yes

Ergebnis: Eine package.json-Datei wird erstellt!


📥 Pakete installieren

bash
# Lokale Installation (empfohlen)
npm install express
npm i express          # Kurzform

# Global Installation (für CLI-Tools)
npm install -g nodemon
npm i -g nodemon      # Kurzform

# Entwicklungsabhängigkeit (nur für Entwicklung)
npm install --save-dev jest
npm i -D jest         # Kurzform

# Genaue Version angeben
npm install express@4.18.2

# Neueste Version angeben
npm install express@latest

Unterschied: Lokal vs. Global

AspektLokal (node_modules/)Global (/usr/local/)
VerwendungIm ProjektSystemweit (CLI-Tools)
Beispielexpress, lodashnodemon, typescript
ZugriffNur im ProjektÜberall im Terminal
Speicherort./node_modules/Systemverzeichnis

📤 Pakete deinstallieren

bash
# Lokales Paket deinstallieren
npm uninstall express
npm un express       # Kurzform

# Globales Paket deinstallieren
npm uninstall -g nodemon

# Entwicklungsabhängigkeit deinstallieren
npm uninstall --save-dev jest

🔄 Pakete aktualisieren

bash
# Alle Pakete aktualisieren
npm update

# Einzelnes Paket aktualisieren
npm update express

# Überprüfen auf veraltete Pakete
npm outdated

# Neueste Versionen erzwingen (Vorsicht!)
npm install express@latest

🏃 Skripte ausführen

bash
# Skript aus package.json ausführen
npm run start
npm run dev
npm run build

# Kurzform für häufige Befehle
npm start           # Equivalent zu: npm run start
npm test            # Equivalent zu: npm run test
npm stop            # Equivalent zu: npm run stop

5.3 package.json Datei analysieren

📄 Struktur von package.json

json
{
  "name": "mein-node-projekt",
  "version": "1.0.0",
  "description": "Ein tolles Node.js-Projekt",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "test": "jest"
  },
  "keywords": ["node", "javascript", "api"],
  "author": "Max Mustermann",
  "license": "MIT",
  "dependencies": {
    "express": "^4.18.2",
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "jest": "^29.7.0",
    "nodemon": "^3.0.2"
  }
}

🔍 Wichtige Felder erklärt

FeldBeschreibungBeispiel
nameProjektname"mein-projekt"
versionProjektversion"1.0.0"
descriptionBeschreibung"Ein API-Server"
mainHaupteinstiegspunkt"index.js"
typeModulsystem"module" (ESM) oder "commonjs"
scriptsAusführbare Skripte{"start": "node index.js"}
dependenciesProduktionsabhängigkeitenExpress, Lodash
devDependenciesEntwicklungsabhängigkeitenJest, Nodemon

5.4 package-lock.json Zweck

🔒 Zweck von package-lock.json

package-lock.json speichert die exakten Versionen aller installierten Pakete (inklusive Abhängigkeiten).

Warum wichtig?

bash
# Ohne package-lock.json
npm install express
# → Installiert möglicherweise Express 4.18.2 bei Ihnen
# → Installiert möglicherweise Express 4.19.0 bei einem Kollegen
# ❌ Verschiedene Versionen = Mögliche Fehler!

# Mit package-lock.json
npm install express
# ✅ Immer exakt dieselbe Version wie ursprünglich installiert

📂 Was wird gespeichert?

json
{
  "name": "mein-projekt",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "mein-projekt",
      "version": "1.0.0",
      "dependencies": {
        "express": "^4.18.2"
      }
    },
    "node_modules/express": {
      "version": "4.18.2",
      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
      "integrity": "sha512-..."
    }
  }
}

✅ Best Practices

  1. Immer in Git einchecken! (Wichtig!)
  2. Niemals manuell bearbeiten!
  3. Bei Problemen: rm package-lock.json && npm install

5.5 Empfohlene Pakete

🌟 Häufig verwendete Pakete (Anfänger)

PaketBeschreibungInstallation
expressWeb-Frameworknpm i express
lodashHilfsfunktionennpm i lodash
momentDatumsverarbeitungnpm i moment
axiosHTTP-Clientnpm i axios
dotenvUmgebungsvariablennpm i dotenv
nodemonAutomatischer Neustartnpm i -D nodemon
jestTest-Frameworknpm i -D jest

📦 Praxis: Paket verwenden

javascript
// app.js
const _ = require('lodash');

const zahlen = [1, 2, 3, 4, 5];
const verdoppelt = _.map(zahlen, n => n * 2);

console.log(verdoppelt); // [2, 4, 6, 8, 10]

5.6 Praxisbeispiel: Installation von Drittanbieter-Paketen

🛠️ Schritt-für-Schritt

Schritt 1: Projekt initialisieren

bash
mkdir mein-projekt
cd mein-projekt
npm init -y

Schritt 2: Pakete installieren

bash
# Produktionsabhängigkeiten
npm install express lodash

# Entwicklungsabhängigkeiten
npm install --save-dev nodemon jest

Schritt 3: package.json anpassen

json
{
  "name": "mein-projekt",
  "version": "1.0.0",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },
  "dependencies": {
    "express": "^4.18.2",
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "jest": "^29.7.0",
    "nodemon": "^3.0.2"
  }
}

Schritt 4: Code schreiben

javascript
// index.js
const express = require('express');
const _ = require('lodash');

const app = express();
const port = 3000;

app.get('/', (req, res) => {
  const zahlen = [1, 2, 3, 4, 5];
  const verdoppelt = _.map(zahlen, n => n * 2);
  
  res.json({
    nachricht: 'Hallo von Express!',
    zahlen: verdoppelt
  });
});

app.listen(port, () => {
  console.log(`🚀 Server läuft auf http://localhost:${port}`);
});

Schritt 5: Skripte ausführen

bash
# Produktion starten
npm start

# Entwicklung starten (mit Nodemon)
npm run dev

📝 Zusammenfassung

In diesem Kapitel haben Sie gelernt:

  • ✅ npm ist der Node.js Paketmanager
  • npm init initialisiert ein Projekt
  • npm install installiert Pakete (lokal/global)
  • npm uninstall deinstalliert Pakete
  • npm run führt Skripte aus
  • package.json beschreibt das Projekt
  • package-lock.json sperrt exakte Versionen
  • ✅ Häufige Pakete: Express, Lodash, Axios

🎯 Nächste Schritte

Im nächsten Kapitel werden wir:

  • Asynchrone Programmierung verstehen
  • Callbacks, Promises, async/await lernen
  • "Callback Hell" vermeiden

📚 Weiterführende Ressourcen


🎉 Kapitel 5 abgeschlossen! Weiter zu Kapitel 6: Asynchrone Programmierung

Frei für alle Anfänger