DokumentyObrazyMediaNarzędzia PDF

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
Processed in your browser

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.

Trzy kroki, żadnych komplikacji

1

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.

2

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.

3

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.

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.