Konversi YAML ke TOML Online
Konversi konfigurasi YAML ke TOML, 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 Docker dan GitHub Actions ke Rust dan Hugo
Migrasi Jekyll ke Hugo
Konversi front matter YAML Jekyll ke TOML untuk memigrasikan konten ke Hugo.
Python modern
Ekstrak konfigurasi dari YAML untuk diadaptasi ke pyproject.toml sesuai PEP 621.
100% privat
YAML Anda tidak pernah meninggalkan browser. Tanpa server, tanpa pendaftaran.
Real-time
Konversi langsung dengan deteksi kesalahan sintaks YAML secara instan.
Cara kerjanya
Tiga langkah, tanpa kerumitan
Tempel YAML Anda
Tempel YAML ke editor. Mendukung docker-compose.yml, workflow GitHub Actions, playbook Ansible, dan YAML 1.2 valid apa pun.
Konversi ke TOML
Konverter mengubah map dan daftar YAML ke bagian dan array TOML. Semuanya berjalan di browser Anda, tidak ada yang diunggah.
Salin atau unduh TOML-nya
Dapatkan TOML yang siap untuk Cargo.toml, pyproject.toml, Pipfile, hugo.toml, atau alat apa pun yang menerima TOML v1.0.
FAQ
Ada pertanyaan?
Skenario paling umum adalah: memigrasikan proyek Python dari requirements.txt ditambah setup.cfg (format lama) ke pyproject.toml (standar modern yang didefinisikan oleh PEP 517/518/621), di mana sebagian konfigurasi mungkin ada dalam YAML (seperti workflow CI/CD) dan Anda ingin menormalkan bagian konfigurasi ke TOML. Juga umum saat memigrasikan situs Jekyll (front matter YAML) ke Hugo (front matter TOML yang disukai). Terakhir, tim yang mengadopsi Rust sering memiliki konfigurasi CI/CD dalam YAML (GitHub Actions) yang perlu dicerminkan dalam Cargo.toml untuk mengelola fitur atau anggota workspace.
docker-compose.yml mendefinisikan layanan, jaringan, dan volume dalam YAML. Meskipun tidak ada padanan TOML native untuk Docker Compose (Docker hanya menerima YAML untuk format Compose-nya), mengonversi docker-compose.yml ke TOML dapat berguna sebagai representasi perantara: beberapa proyek Rust menggunakan TOML sebagai konfigurasi infrastruktur mereka sendiri (misalnya, konfigurasi server dengan tokio, actix-web, atau tauri), dan memiliki struktur layanan yang sama dalam TOML memudahkan integrasi. Konversi menghasilkan TOML valid dengan bagian [[services]] untuk array objek.
Workflow GitHub Actions (.github/workflows/*.yml) memiliki struktur spesifik (on, jobs, steps) yang tidak langsung sesuai dengan struktur pyproject.toml ([project], [tool.X], [build-system]). Namun, umum untuk mengekstrak bagian-bagian workflow yaitu seperti matriks versi Python, dependensi pengujian, atau konfigurasi alat untuk dimasukkan ke dalam pyproject.toml. Alat ini mengonversi YAML lengkap ke TOML struktural; dari TOML yang dihasilkan Anda dapat memilih dan mengadaptasi bagian yang relevan untuk ditambahkan ke pyproject.toml Anda.
Proses kebalikan dari Hugo ke Jekyll: front matter YAML Jekyll dibatasi oleh --- di awal dan akhir file Markdown. Untuk bermigrasi ke Hugo dengan front matter TOML, ekstrak blok YAML di antara ---, konversi ke TOML dengan alat ini, dan ganti pembatas --- dengan +++. Field umum (title, date, tags, categories, draft) langsung diterjemahkan. Permalink dan layout khusus Jekyll mungkin memerlukan pemetaan manual ke padanan Hugo (url, type, layout).
Beberapa fitur YAML tidak memiliki pemetaan langsung ke TOML. Anchor dan alias YAML (&anchor dan *alias) diselesaikan sebelum konversi, sehingga TOML yang dihasilkan berisi nilai yang sudah diperluas, bukan referensi. Beberapa dokumen YAML (dipisahkan oleh ---) tidak memiliki padanan TOML, karena TOML selalu berupa dokumen tunggal. Kunci dengan tipe khusus (tanggal sebagai kunci map, kunci dengan karakter khusus) mungkin memerlukan kutipan dalam TOML. Nilai null YAML (~ atau null) direpresentasikan sebagai string kosong atau dihilangkan dalam TOML, karena TOML tidak memiliki tipe null native (TOML 1.0 tidak menyertakan null).
TOML yang dihasilkan secara sintaksis valid sesuai spesifikasi TOML 1.0 dan dapat diparsing oleh toml-rs (parser Rust yang digunakan oleh Cargo) atau library TOML standar lainnya. Namun, kompatibilitas semantis dengan Cargo.toml bergantung pada apakah YAML input sudah memodelkan struktur manifest Cargo dengan benar: [package], [dependencies], [dev-dependencies], [[bin]], [[lib]], dan sebagainya. Jika YAML Anda sudah memodelkan struktur ini, TOML yang dihasilkan akan menjadi Cargo.toml yang valid. Jika berasal dari sumber yang berbeda (seperti docker-compose.yml), TOML yang dihasilkan perlu adaptasi manual.
Konversi YAML ke TOML: memigrasikan Docker dan GitHub Actions ke ekosistem Rust dan Hugo
Mengonversi YAML ke TOML adalah alur yang kurang umum dibandingkan arah sebaliknya, tetapi memiliki kasus penggunaan yang terdefinisi dengan baik dalam ekosistem pengembangan modern. Yang paling relevan adalah adopsi TOML sebagai standar konfigurasi dalam Python: pyproject.toml, didefinisikan oleh PEP 518 pada 2016 dan diperluas oleh PEP 517 (sistem build), PEP 621 (metadata proyek, 2021), dan PEP 660 (editable build), telah secara progresif menggantikan setup.py, setup.cfg, dan requirements.txt sebagai konfigurasi pusat untuk proyek Python modern. Alat seperti Poetry, Hatch, Flit, dan PDM menggunakan pyproject.toml sebagai sumber kebenaran mereka. Jika proyek Python yang sudah ada memiliki sebagian konfigurasi dalam YAML, misalnya versi Python yang didukung didefinisikan dalam workflow GitHub Actions, atau konfigurasi tox dalam YAML, mengonversinya ke TOML untuk dipusatkan di pyproject.toml adalah peningkatan keterpeliharaan.
Dalam ekosistem Rust, Cargo.toml adalah inti proyek: mendefinisikan nama crate, versi (mengikuti Semantic Versioning), penulis, edisi Rust (2015, 2018, 2021, 2024), dependensi dengan versi semver, fitur crate opsional, target (binari, library, contoh, pengujian, benchmark), dan konfigurasi workspace untuk proyek monorepo. Ketika tim mengadopsi Rust untuk layanan baru dalam infrastruktur yang sudah banyak menggunakan YAML (docker-compose.yml untuk pengembangan lokal, manifest Kubernetes untuk production, GitHub Actions untuk CI/CD), mereka mungkin perlu mengekstrak bagian konfigurasi YAML tersebut untuk dimasukkan ke dalam Cargo.toml. Contoh paling praktis: workflow GitHub Actions mendefinisikan matriks versi Rust yang akan diuji (stable, beta, nightly); informasi tersebut mungkin ingin dicerminkan dalam Cargo.toml workspace.
Migrasi konten antara generator situs statis adalah skenario paling konkret untuk konversi YAML ke TOML. Jekyll, dibuat oleh Tom Preston-Werner pada 2008 dan mesin di balik GitHub Pages, mempopulerkan konsep front matter YAML yang dibatasi oleh --- dalam file Markdown. Hugo, generator situs statis tercepat (ditulis dalam Go, dengan waktu build tipikal dalam milidetik untuk ribuan halaman), mengadopsi TOML sebagai format front matter yang disukai di versi awal, meskipun juga mendukung YAML dan JSON. Memigrasikan situs dari Jekyll ke Hugo yaitu migrasi populer di kalangan pengembang yang mencari performa lebih baik untuk situs besar memerlukan konversi front matter YAML setiap file Markdown ke format TOML dengan pembatas +++. Untuk situs dengan ratusan posting, ini diotomatiskan dengan skrip Python (PyYAML ditambah toml) atau Node.js (js-yaml ditambah @iarna/toml), menggunakan alat ini untuk memvalidasi konversi kasus individual.