YAML 格式化工具
格式化、驗證並轉換 YAML 文件,具備語法高亮與錯誤偵測功能
YAML 輸入
格式化輸出
檢查器
進階選項
與另一份 YAML 比較
將此文件傳送到 Data Diff,再貼上第二個版本,即可查看有哪些變更。
驗證並顯示確切的錯誤位置
使用 js-yaml 1.2 剖析器在每次按鍵輸入時進行驗證。有效的文件會即時顯示文件數、mapping、序列、鍵與深度的統計;無效的文件則會回報確切的行與欄、可能原因,並在出錯位置高亮標示 —— 而不只是 "syntax error"。
本工具能精確定位的常見 YAML 錯誤
這些錯誤佔了無效 YAML 的大多數。每一種都會偵測出位置與可能原因:
縮排錯誤
子行縮排少於父行,或同層行未對齊。通常會在確切的行數回報為 "bad indentation of a mapping entry"。
TAB 字元
YAML 禁止在縮排中使用 TAB。剖析器會回報 "found a tab character that violates indentation",並高亮標示出錯的行。
重複的鍵
同一個 mapping 中出現兩次相同的鍵。js-yaml 會回報 "duplicated mapping key",並指出第二次出現的行數。
缺少冒號或空格
鍵後沒有值("key key2"),或冒號緊貼著鍵("key:value" 會被視為純字串,而非鍵值對)。會回報為 "could not find expected ':'"。
格式化前 / 格式化後
左側為精簡的 Kubernetes manifest,右側為以 2 空格縮排格式化後的同一份文件。結構、樹狀圖與路徑會依剖析後的文件更新。
{apiVersion: apps/v1, kind: Deployment, metadata: {name: web-app}, spec: {replicas: 3, template: {metadata: {labels: {app: web}}}}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
template:
metadata:
labels:
app: web
YAML 快速參考(YAML 1.2)
- 縮排即結構:只能使用空格 —— 縮排絕不允許使用 TAB 字元。
- 冒號後必須加一個空格才是鍵的分隔符:"key: value",而不是 "key:value"。
- 純量會依 core schema 解析為型別:true/false(布林值)、整數、浮點數、null(~ / null / 空值)。注意在 1.2 中 "yes"/"no" 只是普通字串。
- 同一個檔案中的多份文件以 "---" 行分隔;"..." 表示文件結束。
- 錨點(&base)與別名(*base)可讓檔案保持 DRY;合併鍵("<<: *base")可繼承 mapping。
這份資料的後續步驟
格式化只是第一步。不需離開瀏覽器即可繼續後續流程:
常見問題解答
關於 Yaml Formatter 格式化的常見問題解答
本格式化工具遵循 YAML 1.2 規範,確保與 Kubernetes、Docker Compose、GitHub Actions 等現代工具及雲端原生平台相容。
是的,雙向轉換功能可讓您將 YAML 轉換為 JSON,以及將 JSON 轉換為 YAML,同時保留資料型別、巢狀結構,並在適用情況下保留註解。
當然可以。此格式化工具專為處理 Kubernetes manifests、Docker Compose 檔案、CI/CD 管線,以及其他多文件 YAML 檔案而設計,能正確分隔各個文件區段。
驗證器會檢查縮排一致性、冒號與連字號的使用是否正確、引號字串是否成對,以及錨點與別名的參照,並提供標明行號的錯誤訊息,方便快速除錯。
是的,格式化工具能正確處理 YAML 錨點、別名與合併鍵(merge keys),在格式化周邊結構的同時保留這些符合 DRY 原則的特性。
YAML 1.2,即 yaml.org 目前的規範,也是 Kubernetes、docker-compose 與 GitHub Actions 文件所針對的版本。YAML 1.2 將 JSON 納為有效子集,並收緊布林值的解析規則;當 1.1 版解析器(在 Python PyYAML 中仍十分常見)可能誤讀 "no" 或 "0777" 這類值時,格式化工具會保留明確的引號標註。
YAML 錨點、別名與區塊純量會讓註解原封不動地保留,但附在需要重新縮排的鍵上的註解,會隨著其縮排層級一起移動。格式化工具絕不會刪除註解——它只會以最小的幅度調整註解位置,使其持續附著於所描述的節點上。
它會標記這個問題:未加引號的 NO、no、ON、on、yes、n 在格式化時會自動加上引號,因此 YAML 1.1 解析器無法將它們強制轉換為布林值。國家代碼清單 [NO, SE, DK] 會維持為三個字串。YAML 1.2 只將 true/false 視為布林值,但加上引號是唯一在兩種版本下都安全的輸出方式。