Kodokon kodokon.com

ES-Module und npm: dein Projekt organisieren

Du strukturierst ein Node-Projekt mit package.json, ES-Modulen, npm-Abhängigkeiten und Skripten.

9 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Ein echtes Projekt passt nicht in eine einzige Datei: Du teilst es in Module auf, also in Dateien, die exportieren, was sie anbieten, und importieren, was sie brauchen. Die Syntax import / export kennst du schon aus dem JavaScript-Pfad; sehen wir uns an, wie Node sie ermöglicht. Alles beginnt mit package.json, dem Ausweis deines Projekts: eine Datei im JSON-Format, die seinen Namen, seine Version und seine Einstellungen beschreibt. Zum Erstellen wechselst du in einen leeren Ordner und führst npm init -y aus (die Option -y übernimmt alle Standardantworten). Füge dann die Zeile "type": "module" hinzu: Sie sagt Node, dass deine .js-Dateien ES-Module verwenden.

JSON
{
  "name": "my-project",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node main.js",
    "dev": "node --watch main.js"
  }
}
Deine package.json nach npm init -y, ergänzt um die type-Zeile und zwei Skripte, die wir weiter unten verwenden.

Legen wir in diesem Ordner zwei Dateien an: math.js exportiert eine Funktion, main.js importiert sie. Eine Besonderheit von Node: Der Import einer lokalen Datei muss mit ./ beginnen und mit der Endung .js enden. Beides ist Pflicht, anders als es manche Web-Werkzeuge durchgehen lassen.

JAVASCRIPT
// math.js
export function add(a, b) {
  return a + b;
}

// main.js
import { add } from "./math.js";

console.log(add(2, 3));
Zwei getrennte Dateien. Führe node main.js aus: Das Ergebnis 5 erscheint.

Die große Stärke von npm ist seine weltweite Bibliothek an Paketen: Code, den andere geschrieben haben, sofort einsatzbereit. Der Befehl npm install lädt ein Paket in den Ordner node_modules deines Projekts und trägt es im Abschnitt dependencies der package.json ein: die Liste der Pakete, die dein Projekt zum Funktionieren braucht. Eine automatisch erzeugte Datei package-lock.json hält die genau installierten Versionen fest, damit alle dasselbe bekommen. Probieren wir es mit chalk, einem Paket, das den im Terminal angezeigten Text einfärbt.

BASH
npm install chalk
Nach diesem Befehl taucht chalk in dependencies und in node_modules auf; danach kannst du es wie jedes andere Modul importieren.

Eine letzte Säule: die npm-Skripte, also Befehlsabkürzungen, die im Abschnitt scripts der package.json deklariert werden. npm run dev führt den unter dem Namen dev gespeicherten Befehl aus, so lang der echte Befehl auch sein mag. Unser Skript dev nutzt node --watch, eine Option, die das Programm bei jeder Dateiänderung automatisch neu startet: sehr angenehm während der Entwicklung.

BASH
npm run start
npm run dev
Jeder Befehl führt das gleichnamige Skript aus. Den Watch-Modus beendest du mit Strg+C.

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Welche Rolle hat die Datei package.json?
    • Das Projekt beschreiben: Name, Version, Skripte und Abhängigkeiten
    • Den JavaScript-Hauptcode des Projekts enthalten
    • Den Code der heruntergeladenen Pakete speichern
    • Den Ordner node_modules ersetzen
  2. Was passiert, wenn du npm install chalk ausführst?
    • chalk wird direkt in deine Datei main.js kopiert
    • chalk wird nur heruntergeladen, ohne eine Spur zu hinterlassen
    • chalk landet in node_modules und wird zu dependencies hinzugefügt
  3. Warum fügt man die Zeile type module in package.json ein?
    • Damit npm Pakete schneller installiert
    • Damit Node .js-Dateien als ES-Module liest (import/export)
    • Um das Projekt automatisch auf npm zu veröffentlichen