Open-Source-Projekt
nodeca/js-yaml avatar
nodeca/js-yaml

js-yaml liest und schreibt YAML 1.1 und YAML 1.2 in JavaScript

Dieses Projekt rundet „JavaScript YAML parser and dumper. Very fast. Supports both the 1.2 and 1.1 specs, and passes the entire YAML Test Suite.“ zu einer praxistauglichen Open-Source-Lösung zusammen, mit wiederverwendbarer Tooling- und Integrationsunterstützung für reale Anwendungsfälle.

6.630 Sterne852 ForksTypeScriptMIT

Auf einen Blick

Was ist das?
nodeca/js-yaml: Parser, Serializer, npm-Installation, Typauflösung und Fehlerbehandlung.
Für wen ist es gedacht?
Geeignet für Teams, deren Ablauf zu Parser, Serializer, npm-Installation, Typauflösung und Fehlerbehandlung passt. Nicht geeignet, wenn eine nicht dokumentierte Komplettlösung oder eine beliebige Plattformunterstützung vorausgesetzt wird.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 3 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 14. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Parser bei js-yaml 1

JS-YAML ist ein JavaScript-Parser und -Writer für YAML, der auf YAML 1.2 abzielt und auch YAML 1.1 unterstützt. Das Projekt gibt an, die gesamte YAML-Testsuite zu bestehen. Die README beschreibt es als schnell und vollständig, enthält jedoch keine Benchmark-Zahlen oder Vergleichsleistungstests. Das Projekt ist in TypeScript geschrieben und über npm verfügbar.

Serializer bei js-yaml 2

Die README zeigt die Installation mit `npm install js-yaml`. Für Benutzer, die von v4 kommen, gibt es einen eigenen Migrationsleitfaden unter `docs/migrate_v4_to_v5.md`. Die README spezifiziert nicht, was sich zwischen v4 und v5 geändert hat, und listet auch keine versionsspezifischen Systemanforderungen auf. Die CLI kann mit `npx js-yaml -h` aufgerufen werden, aber die README weist darauf hin, dass das CLI-Skript minimal ist und wahrscheinlich nicht erweitert wird.

npm-Installation bei js-yaml 3

Die primäre Parsing-Funktion ist `load(string[, options])`, die ein einzelnes YAML-Dokument liest und bei Fehlern eine `YAMLException` wirft. Sie lehnt Multi-Dokument- und leere Quellen bewusst ab. Zu den Optionen gehören `filename` für Fehlermeldungen, eine Schemaauswahl, `json` für JSON.parse-kompatibles Verhalten bei doppelten Schlüsseln sowie Limits wie `maxDepth`, `maxTotalMergeKeys` und `maxAliases`. Die README warnt davor, bei nicht vertrauenswürdigen Eingaben die Sicherheitshinweise in `docs/safety.md` zu beachten.

Typauflösung und Fehlerbehandlung bei js-yaml 4

Wenn eine Quelle mehrere YAML-Dokumente enthalten kann, gibt `loadAll(string[, options])` ein Array geparster Dokumente zurück. Es verhält sich wie `load`, versteht aber Dokumenttrenner. Die README bietet keine separate Optionsliste für `loadAll`, was nahelegt, dass es dieselben Optionen wie `load` teilt, aber das wird nicht ausdrücklich gesagt. Das Beispiel zeigt einen einfachen Aufruf nur mit Daten.

Parser bei js-yaml 5

Die Funktion `dump(object[, options])` serialisiert ein JavaScript-Objekt in ein YAML-Dokument. Standardmäßig wirft sie eine Ausnahme, wenn sie nicht unterstützte Typen wie Regexe oder Funktionen antrifft, es sei denn, `skipInvalid` ist true. Die Optionsliste ist umfangreich: `indent`, `flowLevel`, `seqNoIndent`, `seqInlineFirst`, `quoteStyle`, `forceQuotes`, `sortKeys`, `lineWidth`, `noRefs` und mehrere Flow-Formatierungsschalter. Es gibt auch eine `transform`-Funktion, die das erzeugte AST vor dem Rendern verändern kann.

Serializer bei js-yaml 6

JS-YAML definiert mehrere Schemas: `FAILSAFE_SCHEMA` für Strings, Arrays und einfache Objekte; `JSON_SCHEMA` für JSON-Typen; `CORE_SCHEMA` als Obermenge von JSON; und `YAML11_SCHEMA` für Legacy-1.1-Typen. Der Standard für `load` ist `CORE_SCHEMA`. `YAML11_SCHEMA` fügt `!!binary`, `!!timestamp`, `!!set`, Merge-Keys und ältere Notationen hinzu. Einige Typen wie `!!omap` und `!!pairs` existieren nur für die YAML-1.1-Kompatibilität und können nicht gedumpt werden. JavaScript-spezifische Tags sind über ein separates Paket `js-yaml-js-types` verfügbar.

npm-Installation bei js-yaml 7

Das Paket enthält eine minimale CLI für schnelle Überprüfungen, aufgerufen mit `npx js-yaml -h`. Die README sagt, es gibt keine Pläne, sie zu erweitern. JS-YAML wird unter der MIT-Lizenz veröffentlicht; der Auszug gewährt das Recht zur Nutzung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, Verteilung, Unterlizenzierung und zum Verkauf von Kopien, sofern der Copyright-Hinweis enthalten ist. Der Lizenztext lehnt ausdrücklich Gewährleistung und Haftung ab und sagt nichts über Sicherheitsgarantien oder langfristigen Support. nodeca/js-yaml verlangt an dieser Stelle eine genaue Trennung zwischen dokumentierter API und eigener Anwendungslogik. Bei node-ffi/node-ffi betrifft das etwa die Signatur von libm und die Abbildung von C-Typen; bei nodejs/nan betrifft es Makros und die jeweils unterstützte Node-Version; bei nodeca/js-yaml betrifft es load, die YAML-Version und den Umgang mit Fehlern. Diese Prüfung bleibt auf den genannten Projektbestandteil begrenzt und ersetzt keine Behauptung über nicht dokumentierte Eigenschaften. nodeca/js-yaml verlangt an dieser Stelle eine genaue Trennung zwischen dokumentierter API und eigener Anwendungslogik. Bei node-ffi/node-ffi betrifft das etwa die Signatur von libm und die Abbildung von C-Typen; bei nodejs/nan betrifft es Makros und die jeweils unterstützte Node-Version; bei nodeca/js-yaml betrifft es load, die YAML-Version und den Umgang mit Fehlern. Diese Prüfung bleibt auf den genannten Projektbestandteil begrenzt und ersetzt keine Behauptung über nicht dokumentierte Eigenschaften. nodeca/js-yaml verlangt an dieser Stelle eine genaue Trennung zwischen dokumentierter API und eigener Anwendungslogik. Bei node-ffi/node-ffi betrifft das etwa die Signatur von libm und die Abbildung von C-Typen; bei nodejs/nan betrifft es Makros und die jeweils unterstützte Node-Version; bei nodeca/js-yaml betrifft es load, die YAML-Version und den Umgang mit Fehlern. Diese Prüfung bleibt auf den genannten Projektbestandteil begrenzt und ersetzt keine Behauptung über nicht dokumentierte Eigenschaften. nodeca/js-yaml verlangt an dieser Stelle eine genaue Trennung zwischen dokumentierter API und eigener Anwendungslogik. Bei node-ffi/node-ffi betrifft das etwa die Signatur von libm und die Abbildung von C-Typen; bei nodejs/nan betrifft es Makros und die jeweils unterstützte Node-Version; bei nodeca/js-yaml betrifft es load, die YAML-Version und den Umgang mit Fehlern. Diese Prüfung bleibt auf den genannten Projektbestandteil begrenzt und ersetzt keine Behauptung über nicht dokumentierte Eigenschaften. nodeca/js-yaml verlangt an dieser Stelle eine genaue Trennung zwischen dokumentierter API und eigener Anwendungslogik. Bei node-ffi/node-ffi betrifft das etwa die Signatur von libm und die Abbildung von C-Typen; bei nodejs/nan betrifft es Makros und die jeweils unterstützte Node-Version; bei nodeca/js-yaml betrifft es load, die YAML-Version und den Umgang mit Fehlern. Diese Prüfung bleibt auf den genannten Projektbestandteil begrenzt und ersetzt keine Behauptung über nicht dokumentierte Eigenschaften. Für nodeca/js-yaml ist außerdem die konkrete Dokumentation maßgeblich: Parser, Serializer, npm-Installation, Typauflösung und Fehlerbehandlung. Ein erster Test sollte genau diesen Teil isolieren und die erwartete Ausgabe mit der README vergleichen.

Redaktionelles Fazit

Geeignet für Teams, deren Ablauf zu Parser, Serializer, npm-Installation, Typauflösung und Fehlerbehandlung passt. Nicht geeignet, wenn eine nicht dokumentierte Komplettlösung oder eine beliebige Plattformunterstützung vorausgesetzt wird. Prüfe zuerst bei nodeca/js-yaml die README-Schritte, die genannten Abhängigkeiten und die konkrete Ausgabe des ersten Tests.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
Community-Notizen

Community-Notizen