← Alle Artikel

YAML-Formatierer: YAML formatieren, neu einrücken und validieren

Ein YAML-Formatierer rückt YAML neu ein und normalisiert es, sodass es lesbar und diff-freundlich ist. Lerne Einrückungsregeln, Typ-Fallen und wann man formatiert vs. nach JSON konvertiert.

YAML ist whitespace-sensitiv, also macht ein versehentlicher Tab oder eine inkonsistente Einrückung nicht nur einen unordentlichen Eindruck —— es ändert die Bedeutung oder bricht das Parsen. Ein YAML-Formatter behebt das: Er rückt dein YAML auf eine konsistente Tiefe neu ein, normalisiert das Spacing und sortiert (optional) die Keys, damit die Datei lesbar ist und saubere Diffs erzeugt. Diese Anleitung erklärt, was ein YAML-Formatter tut, welche Einrückungsregeln er erzwingt, welche Typ-Fallen es zu beachten gibt und wann du YAML formatieren versus zu JSON konvertieren solltest.

Was ein YAML-Formatter tut

Ein Formatter parst dein YAML in eine Datenstruktur und reserialisiert es mit konsistentem Stil. Die Daten bleiben unverändert —— nur die Darstellung wird normalisiert:

  • Rückt jede Ebene neu ein auf eine feste Breite (üblich 2 Spaces) und ersetzt Tabs durch Spaces
  • Normalisiert das Spacing um Doppelpunkte, Listen-Bindestriche und Inline-Collections
  • Sortiert optional die Keys für eine kanonische, diff-freundliche Reihenfolge
  • Validiert nebenbei —— wenn es nicht parsen kann, hast du erst einen Syntaxfehler zu beheben
# Vorher —— gemischte Einrückung, schwer zu scannen
server:
    host: api.example.com
    ports:
    - 8080
    - 8443
database: {name: mydb, pool: 5}

# Nachher —— 2-Space-Einrückung, normalisiert
server:
  host: api.example.com
  ports:
    - 8080
    - 8443
database:
  name: mydb
  pool: 5

Warum YAML formatieren

  • Lesbarkeit —— CI-Pipelines, Kubernetes-Manifests und Docker-Compose-Dateien werden tief verschachtelt; konsistente Einrückung macht sie scannbar.
  • Saubere Diffs und Reviews —— normalisierte Formatierung (und sortierte Keys) bedeutet, dass ein Pull-Request nur echte Änderungen zeigt, kein Whitespace-Rauschen.
  • Fehler früh erkennen —— Formatieren gelingt nur bei gültigem YAML, also ist ein Formatter zugleich ein schneller Validitätscheck.
  • Konsistenz im Team —— ein Stil, automatisch angewendet, statt Einrückungs-Gewohnheiten pro Autor.

Die Einrückungsregeln, die ein Formatter erzwingt

Die meisten YAML-Fehler sind Einrückungsfehler, und genau das standardisiert ein Formatter:

  • Nur Spaces —— niemals Tabs. YAML verbietet Tab-Zeichen für Einrückung. Ein einzelner Tab ist der häufigste „Warum parst das nicht?"-YAML-Bug.
  • Konsistente Tiefe. Geschwister-Keys müssen relativ zu ihrem Parent mit derselben Anzahl Spaces eingerückt sein. Ein Formatter schreibt alles auf eine feste Breite um.
  • Listen-Ausrichtung. Items in einer Block-Sequenz (-) richten sich unter ihrem Key aus; ein Formatter normalisiert, ob der Bindestrich eingerückt oder bündig ist.

Typ-Fallen beim Umformatieren

Formatieren erhält Daten, aber YAMLs Typinferenz kann dich bei unquoted Werten überraschen —— gut zu wissen, bevor du dem Output traust:

  • Das „Norway problem". Unquoted NO, yes, on, off kann als Boolean gelesen werden, also wird der Ländercode NO zu false. Solche Werte quotest du, damit sie Strings bleiben.
  • Führende Nullen und große Zahlen.007 kann seine Nullen verlieren, wenn es als Zahl gelesen wird; sehr große Integer können Präzision verlieren. IDs, die Strings bleiben müssen, quoten.
  • Daten und Timestamps. Einige Parser konvertieren unquoted datum-ähnliche Strings in Timestamp-Typen. Quoten, wenn du den literalen String brauchst.

Block-Style vs. Flow-Style

YAML hat zwei Arten, Collections zu schreiben: Block (eingerückt, zeilenorientiert) und Flow (inline, JSON-artig mit [] / {}):

# Block
ports:
  - 80
  - 443

# Flow (gleiche Daten)
ports: [80, 443]

Formatter normalisieren typischerweise zum Block-Style für die Lesbarkeit. Flow-Style ist JSON-kompatibel —— nützlich, wenn man YAML in nur-JSON-Tooling einbettet —— aber schwerer zu lesen, je tiefer es verschachtelt.

Anchors und Aliases: wiederverwendbare Snippets

& markiert einen Anchor; * referenziert ihn. Nützlich, um Config ohne Copy-Paste über Services zu teilen, und Formatter erhalten sie:

defaults: &defaults
  retries: 3
  timeout: 30
api:
  <<: *defaults
  url: https://api.example.com
worker:
  <<: *defaults
  url: https://worker.example.com

Hinweis: Anchors und Aliases verschwinden, wenn du zu JSON konvertierst —— JSON hat keinen Referenztyp, also werden die Werte inline eingefügt. Ein Roundtrip YAML → JSON → YAML verliert sie.

Lint jenseits des Parsens: yamllint

Ein Formatter normalisiert die Form; yamllint erzwingt einen Style Guide (Zeilenlänge, Key-Reihenfolge, Document-Start-Marker, truthy Werte, Kommentar-Spacing). Kombiniere sie in CI: erst formatieren, dann linten mit den Regeln, die dein Team wählt.

YAML formatieren vs. zu JSON konvertieren

Formatieren behält die Datei als YAML —— am besten, wenn Menschen sie weiter editieren. Zu JSON konvertieren ist, wenn ein Programm sie konsumieren muss (die meisten Apps parsen zur Laufzeit nur JSON). Da YAML 1.2 ein striktes Superset von JSON ist, ist die Konvertierung datenmäßig verlustfrei; siehe YAML zu JSON konvertieren und JSON vs. YAML für die Verwendung.

YAML im Browser formatieren und validieren

Füge dein YAML in fixjsons YAML-Validator und -Formatter ein und klicke auf Format YAML, um es neu einzurücken und zu normalisieren, oder To JSON zum Konvertieren. Er meldet die exakte Zeile jedes Syntaxfehlers, und alles läuft im Browser —— kein Upload —— was bei Config-Dateien mit Hosts, Secrets oder internen Einstellungen wichtig ist.

Häufig gestellte Fragen

Was macht ein YAML-Formatter?

Er parst dein YAML und reserialisiert es mit konsistenter Einrückung und Spacing (und optional sortierten Keys), damit die Datei lesbar und diff-freundlich ist. Die Daten bleiben unverändert —— nur die Formatierung wird normalisiert.

Warum parst mein YAML nicht?

Fast immer Einrückung: ein Tab-Zeichen (YAML verbietet Tabs für Einrückung) oder Geschwister-Keys auf inkonsistenten Tiefen. Ein Formatter schreibt alles auf eine einzelne, space-basierte Breite um, was die meisten dieser Probleme aufdeckt und behebt.

Ändert das Formatieren von YAML meine Daten?

Nein —— es ändert nur Whitespace und Key-Reihenfolge. Achte aber auf unquoted Werte: YAML kann Typen inferieren (das „Norway problem"), also quoten Werte wie NO oder 007, die Strings bleiben müssen.

Soll ich YAML formatieren oder zu JSON konvertieren?

Formatieren, wenn Menschen die Datei weiter editieren; zu JSON konvertieren, wenn ein Programm sie konsumiert. Viele Teams schreiben YAML und konvertieren beim Laden zu JSON.

Verwandte Tools & Anleitungen