🧰 UtlKit

Den YAML-Formatierer Benutzen: Kommentare verschwinden, Aliase werden zu vollständigen Kopien ausgebreitet, und 3.0 wird zu 3, mit Formatieren- und Minifizieren-Modus, 2- oder 4-Leerzeichen-Einrückung, und Fehlermeldungen mit Zeile und Spalte erklärt

Alle Verhaltensweisen des YAML-Formatierers im Detail: Kommentare werden entfernt, Aliase in vollständige Kopien ausgebreitet, Schlüsselreihenfolge bleibt erhalten (außer numerischen Schlüsseln), Zahlen werden normalisiert, Flow-Stil im Minifizieren-Modus, und Fehler mit Zeile und Spalte.

YAML ist das Standard-Configurationsformat für Docker Compose, Kubernetes, CI/CD-Pipelines und Ansible, und der YAML-Formatierer dreht sich um die Frage, diese Dateien wieder lesbar zu machen. Fügen Sie ein beliebiges YAML-Dokument ein, wählen Sie einen der beiden Modi, und das Tool emittiert das gesamte Dokument neu mit konsequentem Abstand, komplett in Ihrem Browser. Nichts wird gespeichert oder hochgeladen; Parser und Serializer laufen auf Ihrem Rechner.

YAML einfügen und einen Modus wählen

Es gibt kein Live-Reformatting: Das Dokument wird nur verarbeitet, wenn Sie einen Button drücken. Formatieren ist der Standardmodus und baut das Dokument im Blockstil neu auf, also das Layout mit einem Schlüssel pro Zeile, das die meisten Konfigurationsdateien nutzen. Minifizieren zielt auf ein anderes Ziel: die kompakteste Darstellung zu erzeugen, die der Parser noch lesen kann. Ein kleines Einrückungs-Auswahlfeld wechselt Formatieren zwischen 2 und 4 Leerzeichen; es erscheint nur im Formatierungsmodus, weil Minifizieren immer 2 verwendet.

Was Formatieren tut: ein sauberes Blockstil-Dokument

Formatieren normiert alle Ebenen des Dokuments auf die von Ihnen gewählte Einrückung. Verschachtelte Mappings und Sequenzen rücken auf feste Offsets aus, Leerzeichen am Zeilenende verschwinden, und eine Ebene entspricht immer einem Einrückungsschritt. Lange Werte werden nie umgebrochen: Ein Wert von 400 Zeichen bleibt auf einer Zeile, denn in Konfigurationsdateien zählt die Lesbarkeit der Struktur mehr als die Zeilenlänge.

Was Minifizieren tut: Flow-Stil unter einem Block-Top-Level

Minifizieren drückt das Dokument nicht auf eine einzige Zeile, und das überrascht. Die oberste Ebene bleibt im Blockstil, aber jeder Wert unter einem obersten Schlüssel wird in Flow-Form geschrieben: Eine Zeichenliste wird zu items: [a, b] und ein verschachteltes Mapping zu a: {b: [1, 2]}. Eine Liste von Maps auf der obersten Ebene wird zu je einem Flow-Map pro Zeile, beginnend mit einem Strich und einer öffnenden Klammer. Werte, die im Flow fehlinterpretiert werden könnten, etwa ein Schlüssel namens y, werden in Anführungszeichen gesetzt, um die Bedeutung exakt zu halten.

Was der Formatierer verwirft und umschreibt

Drei Dinge lohnt sich zu kennen, bevor Sie die Ausgabe vergleichen. Kommentare werden verworfen: Der Parser wandelt das Dokument zuerst in eine Datenstruktur um, und Kommentare überleben diesen Schritt nicht. Anker und Aliase werden beim Parsen verstanden, aber der Serializer ist so konfiguriert, dass er keine Verweise ausgibt, sodass jeder Alias als vollständige Kopie des Wertes zurückkommt, auf den er zeigt. Zahlen werden ebenfalls normalisiert: 3.0 wird zu 3, 1e5 zu 100000, 0x10 zu 16, und leere Werte, Tilden und null werden als null ausgegeben, während eine leere Zeichenfolge eine leere Zeichenfolge bleibt, in Anführungszeichen.

Schlüsselreihenfolge: erhalten, mit einer Ausnahme

Der Formatierer sortiert Ihre Schlüssel nicht. Zeichenschlüssel behalten genau die Reihenfolge, die sie in Ihrem Dokument hatten, also kommt eine Datei, die zebra, ant und m auflistet, in derselben Reihenfolge zurück. Es gibt eine Ausnahme, die wie Sortierung aussehen kann: Ein Schlüssel, der wie eine Ganzzahl aussieht, zum Beispiel 123, wandert an den Anfang des Mappings. Das ist nicht der Formatierer, der eine Reihenfolge wählt; so listet das JavaScript-Objekt, das das geparste Dokument hält, seine Eigenschaften auf, und zahlenartige Schlüssel stehen immer zuerst.

Fehlermeldungen mit Zeile und Spalte

Ungültiges YAML liefert keine vage Fehlersituation. Der Parser meldet das Problem mit Zeilen- und Spaltennummer, beide beginnend bei 1, damit Sie direkt zur fehlerhaften Stelle springen. Doppelte Schlüssel werden auf die gleiche Weise abgelehnt, was hilft, wenn ein kopierter Block zweimal einschleicht. Ein Fall ist anders: Eine zweite Dokumentmarkierung in der Eingabe ist ebenfalls ein Fehler, aber diese Meldung hat keine Position, weil der Parser auf Stream-Ebene aufhört. Nichts einzufügen zeigt eine eigene dedizierte Meldung.

Tauschen, löschen, und wohin als Nächstes

Zwei kleine Steuerelemente runden den Workflow ab. Der Tauschen-Button erscheint, sobald eine Ausgabe vorliegt, kopiert sie zurück in die Eingabe und leert die Ausgabe, was iteratives Korrigieren beschleunigt: formatieren, einen Wert bemerken, den Sie überarbeiten wollen, tauschen, bearbeiten, erneut formatieren. Löschen leert beide Seiten und die Fehlerzeile. Nichts auf der Seite wird gespeichert, daher verlässt sensibles Konfigurationsmaterial nie Ihren Browser. Wenn Ihre Daten als JSON beginnen, fahren Sie zuerst den JSON-Formatierer oder gehen Sie direkt zum JSON/YAML-Konverter. XML-Konfigurationen bekommen dieselbe Behandlung im XML-Formatierer, und für Markupsdateien deckt der HTML-Formatter-Guide dasselbe Formatieren- und Minifizieren-Muster mit geschützten Skriptblöcken ab.

Zugehörige Tools

Häufige Fragen

Werden YAML-Kommentare beim Formatieren beibehalten?

Nein. Der Formatierer parst das Dokument zuerst in eine Datenstruktur um, und Kommentare sind kein Teil dieser Struktur, daher verschwinden sie sowohl in der Formatieren- als auch in der Minifizieren-Ausgabe. Wenn Kommentare überleben müssen, halten Sie sie in Ihrem Editor oder Ihrer Versionskontrolle, nicht in der formatierten Kopie.

Warum verschwanden meine Anker und Aliase?

Der Parser versteht Anker und Aliase, aber der Serializer ist so konfiguriert, dass er keine Verweise ausgibt: Jeder Alias kommt als vollständige Kopie des Wertes zurück, auf den er zeigt, und keine Ankername erscheinen im Ergebnis. Die doppelten Inhalte sind der Preis für ein in sich geschlossenes Dokument.

Legt Minifizieren das ganze Dokument auf eine Zeile?

Nein. Die oberste Ebene bleibt im Blockstil, und jeder Wert unter einem obersten Schlüssel wird in einer kompakten Flow-Form geschrieben, wie items: [a, b] oder a: {b: [1, 2]}. Eine Liste von Maps auf der obersten Ebene wird zu einem Flow-Map pro Zeile. Lange Zeilen werden in beiden Modus nie umgebrochen.

Warum wanderte einer meiner Schlüssel an den Anfang?

Zeichenschlüssel behalten ihre ursprüngliche Reihenfolge; nichts wird alphabetisch sortiert. Die Ausnahme ist ein Schlüssel, der wie eine Ganzzahl aussieht, etwa 123: Das geparste Dokument wird in einem JavaScript-Objekt gehalten, und zahlenartige Schlüssel werden immer vor den anderen Schlüsseln gelistet, also springt dieser Schlüssel an den Anfang.

Wie sehen die Fehlermeldungen aus?

Ein Syntaxproblem erzeugt eine Fehlermeldung mit Zeilen- und Spaltennummer, beide beginnend bei 1, damit Sie direkt zur fehlerhaften Stelle springen. Doppelte Schlüssel werden auf die gleiche Weise abgelehnt. Eine zweite Dokumentmarkierung in der Eingabe ist ebenfalls ein Fehler, aber diese Meldung hat keine Position, weil der Parser auf Stream-Ebene aufhört, und nichts einzufügen zeigt eine dedizierte Meldung für leere Eingabe.

Verwandte Artikel