Konversi TOML ke YAML Online
Konversi konfigurasi TOML ke YAML, gratis, di browser Anda.
title: My Project version: 1.0.0 server: host: localhost port: 8080 database: host: db.example.com name: myapp
Kasus penggunaan
Dari Rust dan Hugo ke Docker dan Jekyll
Migrasi Hugo ke Jekyll
Konversi front matter TOML dari file Hugo ke YAML untuk Jekyll, Gatsby, atau generator modern apa pun.
Proyek Rust ke CI/CD
Ekstrak data dari Cargo.toml atau pyproject.toml untuk digunakan dalam workflow GitHub Actions atau GitLab CI.
100% privat
Konfigurasi Anda tidak pernah meninggalkan browser. Tanpa server, tanpa pendaftaran.
Real-time
Konversi langsung saat Anda mengetik. Kesalahan sintaks TOML terdeteksi secara instan.
Cara kerjanya
Tiga langkah, tanpa kerumitan
Tempel TOML Anda
Tempel konten TOML ke editor. Mendukung Cargo.toml, pyproject.toml, Pipfile, hugo.toml, dan TOML v1.0 valid apa pun.
Konversi ke YAML
Konverter mengurai TOML Anda dan menghasilkan YAML 1.2 yang bersih dan berindentasi. Semuanya berjalan di browser Anda, tidak ada yang diunggah.
Salin atau unduh YAML-nya
Dapatkan YAML yang siap untuk docker-compose.yml, GitHub Actions, Ansible, Kubernetes, atau front matter Jekyll/Hugo.
FAQ
Ada pertanyaan?
Kasus paling sering adalah memigrasikan antara ekosistem generator situs statis: Hugo menggunakan TOML sebagai format front matter yang disukai (meskipun juga mendukung YAML), sementara Jekyll, Gatsby, Eleventy, dan sebagian besar generator modern menggunakan YAML. Jika Anda memigrasikan situs dari Hugo ke generator lain, atau jika Anda memiliki perpustakaan konten dengan front matter TOML yang perlu dinormalisasi ke YAML, alat ini mengonversi setiap blok TOML ke padanan YAML-nya. Skenario umum lainnya adalah ekosistem Rust: proyek Rust menggunakan Cargo.toml untuk manajemen dependensi, tetapi saat dikontainerisasi dengan Docker atau mendefinisikan CI/CD di GitHub Actions, Anda perlu mengekspresikan struktur data yang sama dalam YAML.
TOML (Tom's Obvious, Minimal Language) dibuat oleh Tom Preston-Werner (salah satu pendiri GitHub) pada 2013 sebagai alternatif yang lebih sederhana dan tidak ambigu dari YAML untuk file konfigurasi. TOML 1.0 dirilis pada Januari 2021. Karakteristik utamanya: menggunakan bagian yang dibatasi [kurung siku] alih-alih indentasi, memiliki tipe data eksplisit (tanggal RFC 3339, array bertipe, tabel inline), dan tidak ambigu yaitu TOML yang sama selalu menghasilkan pohon data yang sama, yang tidak selalu benar untuk YAML karena berbagai cara merepresentasikan nilai yang sama. YAML lebih ekspresif dan matang (YAML 1.0 pada 2001, YAML 1.2 pada 2009), tetapi juga lebih rentan terhadap kesalahan indentasi. TOML disukai dalam ekosistem Rust (Cargo.toml) dan Python modern (pyproject.toml, PEP 518/621).
Cargo.toml dan docker-compose.yml memiliki struktur yang berbeda secara konseptual: Cargo.toml mendefinisikan metadata paket Rust, dependensi, dan fitur crate; docker-compose.yml mendefinisikan layanan container, jaringan, dan volume. Tidak ada konversi langsung satu-ke-satu yang bermakna secara semantis. Namun, mengonversi Cargo.toml ke YAML struktural berguna untuk mengekstrak dependensi, versi, atau fitur dan menggunakannya sebagai variabel dalam docker-compose.yml atau workflow GitHub Actions, misalnya, mengekstrak versi paket dari [package].version untuk digunakan sebagai tag image Docker.
Ya, meskipun diperlukan beberapa transformasi manual setelahnya. pyproject.toml (diperkenalkan oleh PEP 518 pada 2016, kini standar de facto untuk proyek Python modern) mendefinisikan metadata proyek, dependensi, alat build (poetry, hatch, flit), dan konfigurasi linter. Mengonversinya ke YAML memberi Anda representasi struktural dari mana Anda dapat mengekstrak dependensi ([tool.poetry.dependencies]) untuk dibuatkan dalam workflow GitHub Actions (pip install) atau membuat lingkungan Conda. Alat ini menghasilkan YAML valid yang dapat Anda edit agar sesuai dengan skema spesifik GitHub Actions, GitLab CI, atau CircleCI.
Dalam Hugo, front matter TOML dibatasi oleh +++ di awal dan akhir file Markdown. Di Jekyll dan sebagian besar generator berbasis YAML, front matter dibatasi oleh --- (tiga tanda hubung). Migrasinya melibatkan: mengekstrak blok TOML di antara +++, mengonversinya ke YAML dengan alat ini, dan mengganti pembatas +++ dengan --- dalam file Markdown. Field standar (title, date, tags, draft) langsung diterjemahkan. Field khusus Hugo (aliases, outputs, cascade) mungkin tidak memiliki padanan Jekyll dan memerlukan adaptasi manual.
Ya. Array TOML dikonversi ke daftar YAML menggunakan sintaks tanda hubung (-). Array inline dikonversi ke urutan aliran YAML atau urutan blok tergantung pada panjangnya. Tabel TOML ([section]) dikonversi ke map YAML bersarang. Array of tables TOML ([[products]]) dikonversi ke daftar objek YAML, yang merupakan representasi YAML paling natural untuk koleksi objek yang berbagi struktur yang sama. Tipe data TOML (tanggal RFC 3339, boolean, integer, float) dipertahankan dalam padanan YAML-nya.
Konversi TOML ke YAML: migrasi Rust, Hugo, dan pyproject.toml ke lingkungan DevOps
TOML (Tom's Obvious, Minimal Language) dibuat oleh Tom Preston-Werner, salah satu pendiri GitHub, pada 2013, dengan tujuan eksplisit untuk tidak ambigu yaitu kritik langsung terhadap kompleksitas YAML, yang memiliki berbagai cara merepresentasikan nilai yang sama dan spesifikasi 1.1-nya mengandung ambiguitas yang menyebabkan parser berbeda berperilaku berbeda. TOML 1.0 dirilis secara resmi pada Januari 2021 setelah delapan tahun pengembangan iteratif. Ekosistem yang paling banyak mengadopsi TOML adalah Rust: Cargo, manajer paket resmi Rust, menggunakan Cargo.toml untuk mendefinisikan metadata crate, dependensi, fitur, dan konfigurasi workspace. Di luar Rust, Python modern telah mengadopsi TOML melalui pyproject.toml (didefinisikan oleh PEP 518 pada 2018 dan dikonsolidasikan oleh PEP 621 pada 2021), yang memusatkan konfigurasi build, metadata paket, dan pengaturan alat untuk pytest, mypy, black, dan ruff. Hugo, generator situs statis tercepat (ditulis dalam Go), mengadopsi TOML sebagai format konfigurasi utamanya.
YAML, yang spesifikasi 1.2-nya diterbitkan pada Oktober 2009, mendominasi ekosistem DevOps: GitHub Actions, GitLab CI, CircleCI, Azure Pipelines, dan Jenkins (melalui pipeline YAML) secara eksklusif menggunakan YAML untuk mendefinisikan pipeline CI/CD. Docker Compose telah menggunakan YAML sejak versi awalnya, Kubernetes menggunakan YAML untuk semua manifest sumber daya, dan Ansible menggunakan YAML untuk playbook dan role. Chart Helm (manajer paket Kubernetes) mencampur YAML dengan template Go. Prevalensi YAML dalam DevOps berarti proyek Rust yang menggunakan Cargo.toml untuk konfigurasi proyek perlu mengekspresikan konfigurasi CI/CD mereka dalam YAML, dan proyek Python dengan pyproject.toml harus menulis workflow GitHub Actions mereka dalam YAML. Hal ini menciptakan koeksistensi kedua format dalam repositori yang sama yang terkadang memerlukan konversi di antara keduanya.
Migrasi antara generator situs statis adalah skenario paling visual di mana TOML ke YAML diperlukan. Hugo, diluncurkan pada 2013 oleh Steve Francia dan kemudian dirawat secara aktif oleh Bjorn Erik Pedersen, mengadopsi TOML sebagai format front matter yang disukai di versi awal. Front matter TOML dalam Hugo dibatasi oleh +++ dan dapat berisi judul, tanggal, kategori, tag, dan data kustom apa pun untuk setiap halaman. Jekyll, generator situs statis tertua dan yang mempopulerkan konsep front matter (dibuat oleh Tom Preston-Werner pada 2008 dan saat ini menjadi mesin di balik GitHub Pages), menggunakan YAML yang dibatasi oleh ---. Memigrasikan situs dari Hugo ke Jekyll melibatkan konversi ribuan file Markdown dengan front matter TOML ke YAML. Meskipun alat ini memproses satu file sekaligus di browser, alat ini berfungsi sebagai validasi konversi sebelum menerapkan skrip batch. Untuk migrasi berskala besar, skrip Python menggunakan toml dan PyYAML, atau Node.js dengan @iarna/toml dan js-yaml, mengotomatiskan prosesnya.