Konwerter TOML na YAML Online
Konwertuj konfiguracje TOML do YAML. Bezpłatnie, w przeglądarce.
title: My Project version: 1.0.0 server: host: localhost port: 8080 database: host: db.example.com name: myapp
Przypadki użycia
Z Rust i Hugo do Docker i Jekyll
Migracja Hugo→Jekyll
Konwertuj front matter TOML z plików Hugo do YAML dla Jekyll, Gatsby lub dowolnego nowoczesnego generatora.
Projekty Rust do CI/CD
Wyodrębniaj dane z Cargo.toml lub pyproject.toml do użycia w przepływach pracy GitHub Actions lub GitLab CI.
100% prywatne
Twoja konfiguracja nigdy nie opuszcza przeglądarki. Bez serwerów, bez rejestracji.
W czasie rzeczywistym
Konwersja na żywo podczas pisania. Błędy składniowe TOML wykrywane natychmiast.
Jak to działa
Trzy kroki, żadnych komplikacji
Wklej swój TOML
Wklej zawartość TOML do edytora. Obsługuje pliki Cargo.toml, pyproject.toml, Pipfile, hugo.toml i dowolny prawidłowy TOML v1.0.
Konwersja do YAML
Konwerter parsuje Twój TOML i generuje przejrzysty, poprawnie wcięty YAML 1.2. Wszystko odbywa się w Twojej przeglądarce — żadne dane nie są przesyłane.
Skopiuj lub pobierz plik YAML
Otrzymaj YAML gotowy do użycia w docker-compose.yml, GitHub Actions, Ansible, Kubernetes lub jako front matter w Jekyll/Hugo.
FAQ
Masz pytania?
Najczęstszym przypadkiem jest migracja między ekosystemami generatorów stron statycznych: Hugo używa TOML jako preferowanego formatu front matter (choć obsługuje też YAML), podczas gdy Jekyll, Gatsby, Eleventy i większość nowoczesnych generatorów używa YAML. Jeśli migrujesz witrynę z Hugo do innego generatora lub masz bibliotekę treści z front matter w TOML wymagającą normalizacji do YAML, to narzędzie konwertuje każdy blok TOML do jego odpowiednika YAML. Innym powszechnym scenariuszem jest ekosystem Rust: projekty Rust używają pliku Cargo.toml do zarządzania zależnościami, ale przy konteneryzacji z Docker lub definiowaniu CI/CD w GitHub Actions musisz wyrazić tę samą strukturę danych w YAML.
TOML (Tom's Obvious, Minimal Language) został stworzony przez Toma Prestona-Wernera (współzałożyciela GitHub) w 2013 roku jako prostsza, jednoznaczna alternatywa dla YAML w plikach konfiguracyjnych. TOML 1.0 został wydany w styczniu 2021 roku. Jego kluczowe cechy: używa sekcji ograniczonych [nawiasami kwadratowymi] zamiast wcięć, ma jawne typy danych (daty RFC 3339, tablice typowane, tabele inline) i jest jednoznaczny — ten sam TOML zawsze produkuje to samo drzewo danych, co nie zawsze jest prawdą dla YAML z uwagi na wiele sposobów reprezentowania tej samej wartości. YAML jest bardziej ekspresywny i dojrzały (YAML 1.0 w 2001, YAML 1.2 w 2009), ale też bardziej podatny na błędy wcięć. TOML jest preferowany w ekosystemie Rust (Cargo.toml) i nowoczesnym Pythonie (pyproject.toml, PEP 518/621).
Pliki Cargo.toml i docker-compose.yml mają konceptualnie różne struktury: Cargo.toml definiuje metadane pakietu Rust, zależności i funkcje crate; docker-compose.yml definiuje usługi kontenerów, sieci i wolumeny. Nie ma bezpośredniej konwersji jeden do jednego z sensem semantycznym. Jednak konwersja Cargo.toml do strukturalnego YAML jest przydatna do wyodrębniania zależności, wersji lub funkcji i używania ich jako zmiennych w pliku docker-compose.yml lub przepływie pracy GitHub Actions — na przykład wyodrębnienie wersji pakietu z [package].version do użycia jako tag obrazu Docker.
Tak, choć z pewną ręczną transformacją po konwersji. Plik pyproject.toml (wprowadzony przez PEP 518 w 2016 roku, dziś de facto standard dla nowoczesnych projektów Python) definiuje metadane projektu, zależności, narzędzia do budowania (poetry, hatch, flit) i konfigurację linterów. Konwersja do YAML daje reprezentację strukturalną, z której możesz wyodrębnić zależności ([tool.poetry.dependencies]) do wygenerowania ich w przepływie pracy GitHub Actions (pip install) lub utworzenia środowiska Conda. Narzędzie generuje prawidłowy YAML, który możesz edytować, aby dopasować go do konkretnego schematu GitHub Actions, GitLab CI lub CircleCI.
W Hugo front matter TOML jest ograniczony przez +++ na początku i końcu pliku Markdown. W Jekyll i większości generatorów opartych na YAML front matter jest ograniczony przez --- (trzy myślniki). Migracja obejmuje: wyodrębnienie bloku TOML między +++, konwersję do YAML za pomocą tego narzędzia i zastąpienie ograniczników +++ przez --- w pliku Markdown. Standardowe pola (title, date, tags, draft) są tłumaczone bezpośrednio. Pola specyficzne dla Hugo (aliases, outputs, cascade) mogą nie mieć odpowiednika w Jekyll i wymagać ręcznej adaptacji.
Tak. Tablice TOML są konwertowane do list YAML z użyciem składni myślnikowej (-). Tablice inline [[1, 2, 3]] są konwertowane do sekwencji przepływu YAML ([1, 2, 3]) lub sekwencji blokowych w zależności od długości. Tabele TOML ([section]) są konwertowane do zagnieżdżonych map YAML. Tablice tabel TOML ([[products]]) są konwertowane do list obiektów YAML, co jest najbardziej naturalną reprezentacją YAML dla kolekcji obiektów o tej samej strukturze. Typy danych TOML (daty RFC 3339, wartości logiczne, liczby całkowite, liczby zmiennoprzecinkowe) są zachowywane w ich odpowiednikach YAML.
Konwertuj TOML do YAML: migracje Rust, Hugo i pyproject.toml do środowisk DevOps
TOML (Tom's Obvious, Minimal Language) został stworzony przez Toma Prestona-Wernera, współzałożyciela GitHub, w 2013 roku z wyraźnym celem bycia 'oczywiście jednoznacznym' — bezpośrednią krytyką złożoności YAML, który ma wiele sposobów reprezentowania tej samej wartości i którego specyfikacja 1.1 zawierała niejasności powodujące różne zachowania różnych parserów. TOML 1.0 został oficjalnie wydany w styczniu 2021 roku po ośmiu latach iteratywnego rozwoju. Ekosystemem, który najbardziej przyjął TOML, jest Rust: Cargo, oficjalny menedżer pakietów Rust, używa pliku Cargo.toml do definiowania metadanych crate, zależności, funkcji i konfiguracji przestrzeni roboczej. Poza Rustem nowoczesny Python przyjął TOML przez plik pyproject.toml (zdefiniowany przez PEP 518 w 2018 roku i ugruntowany przez PEP 621 w 2021 roku), który centralizuje konfigurację budowania, metadane pakietu i ustawienia narzędzi dla pytest, mypy, black i ruff. Hugo, najszybszy generator stron statycznych (napisany w Go), przyjął TOML jako swój główny format konfiguracji.
YAML, którego specyfikacja 1.2 została opublikowana w październiku 2009 roku, dominuje w ekosystemie DevOps: GitHub Actions, GitLab CI, CircleCI, Azure Pipelines i Jenkins (przez potoki YAML) wyłącznie używają YAML do definiowania potoków CI/CD. Docker Compose używa YAML od swojej pierwszej wersji, Kubernetes używa YAML dla wszystkich manifestów zasobów, a Ansible używa YAML dla playbooków i ról. Charty Helm (menedżer pakietów Kubernetes) mieszają YAML z szablonami Go. Powszechność YAML w DevOps oznacza, że projekty Rust używające Cargo.toml do konfiguracji projektu muszą wyrażać konfigurację CI/CD w YAML, a projekty Python z plikiem pyproject.toml muszą pisać swoje przepływy pracy GitHub Actions w YAML. Tworzy to współistnienie obu formatów w tym samym repozytorium, które czasem wymaga konwersji między nimi.
Migracja między generatorami stron statycznych jest najbardziej obrazowym scenariuszem, gdzie TOML→YAML jest niezbędny. Hugo, uruchomiony w 2013 roku przez Steve'a Francię i aktywnie utrzymywany przez Bjørna Erika Pedersena, przyjął TOML jako preferowany format front matter we wczesnych wersjach. Front matter TOML w Hugo jest ograniczony przez +++ i może zawierać tytuł, datę, kategorie, tagi i dowolne dane własne dla każdej strony. Jekyll, najstarszy generator stron statycznych popularyzujący koncepcję front matter (stworzony przez Toma Prestona-Wernera w 2008 roku i będący aktualnie silnikiem GitHub Pages), używa YAML ograniczonego przez ---. Migracja witryny z Hugo do Jekyll wymaga konwersji tysięcy plików Markdown z front matter TOML do YAML. Choć to narzędzie przetwarza jeden plik naraz w przeglądarce, służy jako walidacja konwersji przed zastosowaniem skryptu batch. Do migracji na dużą skalę skrypty Python z modułami toml i PyYAML lub Node.js z @iarna/toml i js-yaml automatyzują ten proces.