DokumenteBilderMedienPDF-Werkzeuge

TOML in YAML konvertieren Online

TOML-Konfiguration in YAML umwandeln. Kostenlos, im Browser.


title: My Project
version: 1.0.0
server:
  host: localhost
  port: 8080
database:
  host: db.example.com
  name: myapp
Processed in your browser

Von Rust und Hugo zu Docker und Jekyll

Hugo→Jekyll-Migration

Wandle TOML-Front-Matter aus Hugo-Dateien in YAML für Jekyll, Gatsby oder einen modernen Generator um.

Rust-Projekte für CI/CD

Extrahiere Daten aus Cargo.toml oder pyproject.toml für GitHub-Actions- oder GitLab-CI-Workflows.

100 % privat

Deine Konfiguration verlässt nie deinen Browser. Keine Server, keine Anmeldung.

Echtzeit

Live-Konvertierung während du tippst. TOML-Syntaxfehler werden sofort erkannt.

Drei Schritte, kein Aufwand

1

Dein TOML einfügen

Füge TOML-Inhalt in den Editor ein. Unterstützt Cargo.toml, pyproject.toml, Pipfile, hugo.toml und jedes gültige TOML v1.0.

2

Umwandlung in YAML

Der Konverter parst dein TOML und generiert sauberes, eingerücktes YAML 1.2. Alles läuft in deinem Browser – nichts wird hochgeladen.

3

YAML kopieren oder herunterladen

Erhalte YAML, das direkt für docker-compose.yml, GitHub Actions, Ansible, Kubernetes oder Jekyll/Hugo-Front-Matter bereit ist.

Noch Fragen?

Der häufigste Fall ist die Migration zwischen Ökosystemen von Static-Site-Generatoren: Hugo verwendet TOML als bevorzugtes Front-Matter-Format (obwohl es auch YAML unterstützt), während Jekyll, Gatsby, Eleventy und die meisten modernen Generatoren YAML verwenden. Wenn du eine Website von Hugo zu einem anderen Generator migrierst oder eine Content-Bibliothek mit TOML-Front-Matter hast, die auf YAML normalisiert werden muss, wandelt dieses Tool jeden TOML-Block in sein YAML-Äquivalent um. Ein weiteres häufiges Szenario ist das Rust-Ökosystem: Rust-Projekte verwenden Cargo.toml für die Abhängigkeitsverwaltung, aber wenn sie mit Docker containerisiert werden oder CI/CD in GitHub Actions definiert wird, muss dieselbe Datenstruktur in YAML ausgedrückt werden.

TOML (Tom's Obvious, Minimal Language) wurde 2013 von Tom Preston-Werner (Mitgründer von GitHub) als einfachere, eindeutige Alternative zu YAML für Konfigurationsdateien entwickelt. TOML 1.0 wurde im Januar 2021 veröffentlicht. Seine Hauptmerkmale: Es verwendet [in eckige Klammern gefasste] Abschnitte statt Einrückungen, hat explizite Datentypen (RFC-3339-Daten, typisierte Arrays, Inline-Tabellen) und ist eindeutig – dasselbe TOML erzeugt immer denselben Datenbaum, was bei YAML aufgrund seiner vielfältigen Darstellungsmöglichkeiten nicht immer gilt. YAML ist ausdrucksstärker und ausgereifter (YAML 1.0 in 2001, YAML 1.2 in 2009), aber auch anfälliger für Einrückungsfehler. TOML wird im Rust-Ökosystem (Cargo.toml) und im modernen Python (pyproject.toml, PEP 518/621) bevorzugt.

Cargo.toml und docker-compose.yml haben konzeptionell unterschiedliche Strukturen: Cargo.toml definiert Rust-Paket-Metadaten, Abhängigkeiten und Crate-Features; docker-compose.yml definiert Container-Services, Netzwerke und Volumes. Es gibt keine direkte Eins-zu-eins-Umwandlung mit semantischer Bedeutung. Die Umwandlung von Cargo.toml in strukturelles YAML ist jedoch nützlich, um Abhängigkeiten, Versionen oder Features zu extrahieren und sie als Variablen in einer docker-compose.yml oder einem GitHub-Actions-Workflow zu verwenden – zum Beispiel die Paketversion aus [package].version zu extrahieren, um sie als Docker-Image-Tag zu verwenden.

Ja, obwohl danach einige manuelle Anpassungen erforderlich sind. pyproject.toml (eingeführt durch PEP 518 im Jahr 2016, heute der De-facto-Standard für moderne Python-Projekte) definiert Projekt-Metadaten, Abhängigkeiten, Build-Tools (poetry, hatch, flit) und Linter-Konfiguration. Die Umwandlung in YAML gibt dir eine strukturelle Darstellung, aus der du Abhängigkeiten ([tool.poetry.dependencies]) extrahieren kannst, um sie in einem GitHub-Actions-Workflow (pip install) zu generieren oder eine Conda-Umgebung zu erstellen. Das Tool generiert gültiges YAML, das du bearbeiten kannst, um es dem spezifischen Schema von GitHub Actions, GitLab CI oder CircleCI anzupassen.

In Hugo wird TOML-Front-Matter am Anfang und Ende der Markdown-Datei durch +++ begrenzt. In Jekyll und den meisten YAML-basierten Generatoren wird Front-Matter durch --- (drei Bindestriche) begrenzt. Die Migration umfasst: den TOML-Block zwischen den +++ extrahieren, ihn mit diesem Tool in YAML umwandeln und die +++-Begrenzungszeichen durch --- in der Markdown-Datei ersetzen. Standardfelder (title, date, tags, draft) werden direkt übertragen. Hugo-spezifische Felder (aliases, outputs, cascade) haben möglicherweise kein Jekyll-Äquivalent und erfordern manuelle Anpassung.

Ja. TOML-Arrays werden in YAML-Listen mit der Bindestrich-(-)-Syntax umgewandelt. Inline-Arrays ([[1, 2, 3]]) werden in YAML-Flow-Sequenzen ([1, 2, 3]) oder Block-Sequenzen umgewandelt, je nach Länge. TOML-Tabellen ([section]) werden in verschachtelte YAML-Maps umgewandelt. TOML-Array-of-Tables ([[products]]) werden in YAML-Listen von Objekten umgewandelt, was die natürlichste YAML-Darstellung für Sammlungen von Objekten mit derselben Struktur ist. TOML-Datentypen (RFC-3339-Daten, Booleans, Integers, Floats) werden in ihren YAML-Äquivalenten beibehalten.

TOML zu YAML konvertieren: Migrationen von Rust, Hugo und pyproject.toml in DevOps-Umgebungen

TOML (Tom's Obvious, Minimal Language) wurde 2013 von Tom Preston-Werner, dem Mitgründer von GitHub, mit dem ausdrücklichen Ziel entwickelt, 'offensichtlich eindeutig' zu sein – eine direkte Kritik an der Komplexität von YAML, das mehrere Möglichkeiten hat, denselben Wert darzustellen und dessen 1.1-Spezifikation Mehrdeutigkeiten enthielt, die dazu führten, dass verschiedene Parser unterschiedliches Verhalten zeigten. TOML 1.0 wurde im Januar 2021 nach acht Jahren iterativer Entwicklung offiziell veröffentlicht. Das Ökosystem, das TOML am stärksten übernommen hat, ist Rust: Cargo, der offizielle Paketmanager von Rust, verwendet Cargo.toml zur Definition von Crate-Metadaten, Abhängigkeiten, Features und Workspace-Konfiguration. Außerhalb von Rust hat modernes Python TOML durch pyproject.toml übernommen (definiert durch PEP 518 im Jahr 2018 und konsolidiert durch PEP 621 im Jahr 2021), das Build-Konfiguration, Paket-Metadaten und Tool-Einstellungen für pytest, mypy, black und ruff zentralisiert. Hugo, der schnellste Static-Site-Generator (geschrieben in Go), übernahm TOML als primäres Konfigurationsformat.

YAML, dessen 1.2-Spezifikation im Oktober 2009 veröffentlicht wurde, dominiert das DevOps-Ökosystem: GitHub Actions, GitLab CI, CircleCI, Azure Pipelines und Jenkins (via YAML-Pipelines) verwenden ausschließlich YAML zur Definition von CI/CD-Pipelines. Docker Compose verwendet YAML seit seiner ersten Version, Kubernetes nutzt YAML für alle Ressource-Manifests, und Ansible verwendet YAML für Playbooks und Rollen. Helm-Charts (der Kubernetes-Paketmanager) mischen YAML mit Go-Templates. Die Verbreitung von YAML in DevOps bedeutet, dass Rust-Projekte, die Cargo.toml für die Projektkonfiguration verwenden, ihre CI/CD-Konfiguration in YAML ausdrücken müssen, und Python-Projekte mit pyproject.toml ihre GitHub-Actions-Workflows in YAML schreiben müssen. Das führt zu einer Koexistenz beider Formate im selben Repository, die manchmal eine Konvertierung zwischen ihnen erfordert.

Die Migration von Static-Site-Generatoren ist das anschaulichste Szenario, in dem TOML→YAML notwendig ist. Hugo, 2013 von Steve Francia gestartet und später aktiv von Bjørn Erik Pedersen gepflegt, übernahm TOML als bevorzugtes Front-Matter-Format in frühen Versionen. TOML-Front-Matter in Hugo ist durch +++ begrenzt und kann den Titel, das Datum, die Kategorien, Tags und beliebige benutzerdefinierte Daten für jede Seite enthalten. Jekyll, der älteste Static-Site-Generator, der das Front-Matter-Konzept populär machte (2008 von Tom Preston-Werner erstellt, aktuell die Engine hinter GitHub Pages), verwendet durch --- begrenztes YAML. Die Migration einer Website von Hugo zu Jekyll umfasst die Konvertierung von Tausenden von Markdown-Dateien mit TOML-Front-Matter in YAML. Während dieses Tool eine Datei gleichzeitig im Browser verarbeitet, dient es als Validierung für die Konvertierung, bevor ein Batch-Skript angewendet wird.