TOML 轉 YAML

把 TOML 文件翻譯為 YAML,支援鍵排序和縮排控制。

把 TOML 文件翻譯為 YAML,支援鍵排序和縮排控制。 把 TOML 文件翻譯為 YAML,支援鍵排序和縮排控制。

輸出

背景知識

為什麼要在 TOML 與 YAML 之間轉換

兩種格式都面向人類編輯的配置檔案,但各自的生態不同。TOML 是 Python 打包(pyproject.toml)、Rust(Cargo.toml)、GitHub 工作流以及許多 CLI 工具的標準。YAML 是 Kubernetes、Ansible、Docker Compose、老式 GitHub Actions 以及許多 CI 系統的標準。

有時你需要在兩種格式裡表達同一份配置:在 Ansible playbook 裡複用 pyproject.toml 的片段,或把 Kubernetes ConfigMap 轉寫到 Cargo.toml 的依賴塊中。TOML→YAML 轉換器讓翻譯保持機械性。

轉換後保留的內容

對映、序列、標量(字串、整數、浮點、布林、ISO 日期)、內聯表和點鍵都能幹淨翻譯。多行字串會輸出為 YAML 塊標量,保持原作者選擇的視覺佈局。

無法保留的內容

YAML 標籤(!!str、!!int 等)僅在底層型別與 YAML 預設推斷不一致時輸出。實際上解析器的選擇與大多數讀者期望一致。預設不會生成 YAML 錨點,因為 TOML 每個值都完全自包含;如果想要共享子樹,請手動引入。

工作流建議

轉換後、提交前,請用 linter(yamllint、kubeconform 等)檢查 YAML。轉換器翻譯語法、不翻譯風格:它不知道你希望遵循 snake_case 還是 kebab-case,也不確定 2 空格還是 4 空格。專案約定由你決定。

基於兩個 MIT/BSD-3 協議的庫(已內置於 public/assets)實現:smol-toml 用於解析,js-yaml 用於生成。輸入始終停留在本頁面。

常見問題

轉換器支援 TOML 表陣列嗎?
支援。`[[name]]` 表頭會變成 `name` 鍵下的 YAML 序列元素,保留表的順序。
YAML 輸出會保留我的 TOML 註釋嗎?
不會。TOML 註釋會被解析器剝離。如有需要請在 YAML 輸出中手動加回。
TOML 的日期在 YAML 中如何表示?
日期與日期時間會變成同樣 ISO 表示的 YAML 字串。大多數 YAML 消費者用各自語言的日期庫解析。
TOML 的內聯表呢?
會變成單行的巢狀 YAML 對映。某些風格指南要求塊式以提升可讀性;若 linter 抱怨,請手工轉換。
為什麼輸出用雙引號包圍字串?
YAML 單引號字串禁止轉義序列,YAML 裸標量有保留關鍵字;雙引號是任意文本往返最安全的預設選擇。
我的 TOML 會上傳嗎?
不會。解析在本地通過 smol-toml 完成,YAML 輸出在本地通過 js-yaml 生成,不會上傳到伺服器。