Arbeit mit YAML in Node.js: Bibliotheken js-yaml und yaml

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit YAML in JavaScript (Node.js)



YAML (YAML Ain't Markup Language) ist ein menschenlesbares Daten-Serialisierungsformat, das häufig für Konfigurationsdateien verwendet wird (z. B. in Docker Compose, Kubernetes, Ansible). Im Node.js-Ökosystem gibt es zwei Hauptbibliotheken für die Arbeit mit YAML: js-yaml (die beliebteste) und yaml (modern, mit Unterstützung für Streams).



In diesem Artikel werden wir beide Bibliotheken betrachten, lernen, YAML in JavaScript-Objekte zu parsen, Objekte zurück in YAML zu serialisieren sowie Fehler zu behandeln und mit Dateien zu arbeiten.



Installation der Bibliotheken



Installieren Sie zunächst eine der Bibliotheken über npm:



# Installation von js-yaml (empfohlen für die meisten Projekte)npm install js-yaml

# Installation der moderneren Bibliothek yamlnpm install yaml


Bibliothek js-yaml



js-yaml ist die ausgereifteste und am weitesten verbreitete Bibliothek für die Arbeit mit YAML in Node.js. Sie unterstützt die vollständige YAML 1.2-Spezifikation, einschließlich komplexer Datentypen, Tags und benutzerdefinierter Schemata.



Parsen eines YAML-Strings



const yaml = require('js-yaml');

const yamlString = `server: host: localhost port: 8080 ssl: truedatabase: driver: postgresql host: db.example.com port: 5432 credentials: user: admin password: secret`;

try { const data = yaml.load(yamlString); console.log(data.server.host); // "localhost" console.log(data.database.credentials.user); // "admin"} catch (e) { console.error('Fehler beim Parsen von YAML:', e.message);}


Parsen einer YAML-Datei



const fs = require('fs');const yaml = require('js-yaml');

try { const fileContents = fs.readFileSync('./config.yaml', 'utf8'); const data = yaml.load(fileContents); console.log(data);} catch (e) { console.error('Fehler beim Lesen der Datei:', e.message);}


Serialisierung in YAML



const yaml = require('js-yaml');

const config = { app: { name: "MyApp", version: "1.0.0" }, features: { logging: true, cache: { ttl: 3600, type: "redis" } }};

const yamlString = yaml.dump(config, { indent: 2, // Einzug von 2 Leerzeichen lineWidth: 80, // maximale Zeilenlänge noRefs: true, // keine Referenzen verwenden sortKeys: true // Schlüssel sortieren});

console.log(yamlString);// Ausgabe:// app:// name: MyApp// version: 1.0.0// features:// cache:// ttl: 3600// type: redis// logging: true


Arbeit mit benutzerdefinierten Typen



js-yaml unterstützt benutzerdefinierte YAML-Tags zur Verarbeitung spezieller Datentypen:



const yaml = require('js-yaml');

// Erstellen eines benutzerdefinierten Typs für Datumconst DateType = new yaml.Type('!date', { kind: 'scalar', resolve: (data) => data.match(/^\\d{4}-\\d{2}-\\d{2}$/), construct: (data) => new Date(data), instanceOf: Date, represent: (date) => date.toISOString().split('T')[0]});

// Erstellen eines Schemas mit benutzerdefiniertem Typconst CUSTOM_SCHEMA = yaml.DEFAULT_SCHEMA.extend([DateType]);

const yamlString = `event: !date 2025-12-31name: "New Year Party"`;

const data = yaml.load(yamlString, { schema: CUSTOM_SCHEMA });console.log(data.event instanceof Date); // trueconsole.log(data.event.getFullYear()); // 2025


Bibliothek yaml



yaml ist eine modernere Bibliothek, die Streaming-Parsing und bessere Unicode-Unterstützung bietet. Sie implementiert ebenfalls die YAML 1.2-Spezifikation.



Basis-Parsing



const YAML = require('yaml');

const doc = YAML.parse(`person: name: Ivan age: 30 hobbies: - Programmieren - Lesen`);

console.log(doc.person.name); // "Ivan"console.log(doc.person.hobbies[0]); // "Programmieren"

Empfehlungen