YAML 轉 TOML

把 YAML 配置翻譯為 TOML,支援縮排和鍵排序。

把 YAML 配置翻譯為 TOML,支援縮排和鍵排序。 把 YAML 配置翻譯為 TOML,支援縮排和鍵排序。

輸出

背景知識

YAML 與 TOML 的重疊與差異

YAML 與 TOML 都以人類可讀的配置格式為目標。它們能表達的資料高度重疊(對映、序列、標量),但語法不同,在一些角落情況也有差異。YAML 支援標籤、錨點和多行標量;TOML 區分內聯表與表陣列,並把日期視為一等型別。

當把配置從一種工具的格式遷移到另一種時,YAML→TOML 轉換器最有用:比如把 Kubernetes 清單放到 pyproject.toml 片段裡,或把 Ansible 清單改寫成 Cargo [dependencies] 表。

轉換後保留的內容

對映(YAML 中的 key: value)根據上下文變成 TOML 表或鍵值對。序列變成內聯陣列或 [[array.of.tables]] 表頭。標量只要能乾淨對映就保留:字串、整數、浮點、布林、ISO 日期。

無法保留的內容

解析時錨點和別名會被展平;轉換後的 TOML 在每個別名處都是具體值,這通常是消費者想要的。YAML 的 !!binary 標籤無法保留,因為 TOML 沒有等價物。註釋會被有意丟棄——兩種格式都不保證往返保留。

工作流建議

提交轉換後的 TOML 前,請執行專案的 TOML linter(taplo、toml-check 等)。轉換器只翻譯語法,不翻譯風格;linter 能捕獲轉換器檢測不到的引號、縮排和鍵序問題。

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

常見問題

轉換器會處理 YAML 錨點嗎?
會。解析時錨點(&name value)和別名(*name)會被展開,因此 TOML 在每個別名處都是解析後的值。原始錨點名稱不會保留。
YAML 中的註釋會保留嗎?
不會。所有主流解析器都會剝離 YAML 註釋。如有需要請在 TOML 中手動加回。
轉換器能處理多文件 YAML 檔案嗎?
不能。本工具把每次上傳當作單一文件處理。多文件請使用專用工具。
TOML 支援多行字串嗎?
支援。對於含換行的 YAML 標量,轉換器輸出 TOML 的三引號基礎字串,保持可讀性。
YAML 的 !!binary 資料呢?
TOML 沒有 base64 二進位制等價物。轉換器會警告並跳過這些值,避免靜默損壞。
我的 YAML 會上傳嗎?
不會。解析在本地通過 js-yaml 完成,TOML 輸出在本地通過 smol-toml 生成,不會上傳到伺服器。