Appearance
Kapitel 5: npm Paketverwaltung
🎯 Lernziele
In diesem Kapitel lernen Sie:
- ✅ npm (Node Package Manager) Grundlagen
- ✅ Wichtige npm-Befehle (
init,install,uninstall,run) - ✅
package.jsonverstehen - ✅
package-lock.jsonverstehen - ✅ 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 Welt5.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 --yesErgebnis: 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@latestUnterschied: Lokal vs. Global
| Aspekt | Lokal (node_modules/) | Global (/usr/local/) |
|---|---|---|
| Verwendung | Im Projekt | Systemweit (CLI-Tools) |
| Beispiel | express, lodash | nodemon, typescript |
| Zugriff | Nur 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 stop5.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
| Feld | Beschreibung | Beispiel |
|---|---|---|
name | Projektname | "mein-projekt" |
version | Projektversion | "1.0.0" |
description | Beschreibung | "Ein API-Server" |
main | Haupteinstiegspunkt | "index.js" |
type | Modulsystem | "module" (ESM) oder "commonjs" |
scripts | Ausführbare Skripte | {"start": "node index.js"} |
dependencies | Produktionsabhängigkeiten | Express, Lodash |
devDependencies | Entwicklungsabhängigkeiten | Jest, 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
- Immer in Git einchecken! (Wichtig!)
- Niemals manuell bearbeiten!
- Bei Problemen:
rm package-lock.json && npm install
5.5 Empfohlene Pakete
🌟 Häufig verwendete Pakete (Anfänger)
| Paket | Beschreibung | Installation |
|---|---|---|
| express | Web-Framework | npm i express |
| lodash | Hilfsfunktionen | npm i lodash |
| moment | Datumsverarbeitung | npm i moment |
| axios | HTTP-Client | npm i axios |
| dotenv | Umgebungsvariablen | npm i dotenv |
| nodemon | Automatischer Neustart | npm i -D nodemon |
| jest | Test-Framework | npm 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 -ySchritt 2: Pakete installieren
bash
# Produktionsabhängigkeiten
npm install express lodash
# Entwicklungsabhängigkeiten
npm install --save-dev nodemon jestSchritt 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 initinitialisiert ein Projekt - ✅
npm installinstalliert Pakete (lokal/global) - ✅
npm uninstalldeinstalliert Pakete - ✅
npm runführt Skripte aus - ✅
package.jsonbeschreibt das Projekt - ✅
package-lock.jsonsperrt 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
