YAML 格式化器:線上格式化、驗證與美化 YAML
YAML(YAML Ain't Markup Language)已成為雲端原生生態系統的首選組態格式——Kubernetes 清單、Docker Compose 檔案、Ansible 腳本、GitHub Actions 工作流程與 CI/CD 管線全都以 YAML 撰寫。其人性化的語法(無括號、簡單字串無需引號、允許註解)使其在組態方面比 JSON 更具可讀性,但它依賴縮排來定義結構的特性使其獨特地容易出錯。一個 Tab 字元出現在預期兩個空格的位置,或一個在錯誤巢狀層級的未對齊鍵,可能無聲地改變整個組態的語義——或產生一個神秘的剖析錯誤在第 47 行,而實際問題發生在第 12 行。我們的 YAML 格式化器以一致的 2 空格縮排美化雜亂的 YAML,以精確的錯誤位置與淺顯易懂的解釋驗證語法,並在 YAML 與 JSON 之間雙向轉換。它偵測常見的陷阱——用於縮排的 Tab(YAML 禁止 Tab)、同一文件內不一致的縮排、重複的鍵(YAML 會無聲地覆寫),以及挪威問題(未加引號的國家代碼如 'NO' 被解釋為布林值 false)。該工具處理多文件 YAML 檔案(以 --- 分隔)並支援 YAML 1.2 規範,包含錨點、別名、標籤與多行字串風格。所有處理都在您的瀏覽器中執行——您的 Kubernetes 機密資訊、部署組態與 CI/CD 憑證永遠不會離開您的機器。
YAML格式化工具
免費 · 無需註冊
分步指南
貼上、輸入或上傳 YAML
將您的 YAML 貼到編輯器中或上傳 .yaml / .yml 檔案。編輯器具備對純量、鍵、序列與錨點的語法醒目標示。多文件 YAML(以三個連字號 --- 分隔的文件)會被偵測,每個文件獨立格式化。該工具甚至可處理嵌入在字串欄位中的 YAML(例如,CloudFormation 範本),透過提取並格式化嵌入的 YAML。
格式化並驗證
點擊「格式化」以使用一致的 2 空格縮排、適當的引用(在模糊值需要時新增引號)與正規化的錨點/別名參照來美化 YAML。驗證器會自動執行並標記:Tab 字元(確切的行與欄)、不一致的縮排、重複的映射鍵,以及可能因 YAML 隱式型別強制轉換而被誤解的值。每個錯誤都會連結到編輯器位置並附帶修復建議。
轉換為 JSON 或下載
使用「轉換為 JSON」按鈕從您的 YAML 產生等效的 JSON——當某個工具或 API 需要 JSON 輸入,但您偏好以 YAML 撰寫組態時非常有用。反向操作(「從 JSON 轉換」)也可用。將格式化的 YAML 下載為 .yaml 檔案、複製到剪貼簿,或以互動式樹狀結構檢視剖析後的資料結構。
使用技巧與最佳實踐
YAML 1.2(2009 年)解決了最惡名昭彰的 YAML 陷阱:在 YAML 1.1 中,未加引號的 "yes"、"no"、"on"、"off"、"true" 與 "false" 被解釋為布林值。國家代碼如 "NO"(挪威)與 "YES" 會變成布林值 false 與 true——這個錯誤如此常見,以至於被稱為「挪威問題」。YAML 1.2 僅將 "true" 與 "false"(不區分大小寫)識別為布林值。我們的格式化器會偵測模糊值並建議對其加引號。
YAML 縮排黃金規則:每個巢狀層級使用 2 個空格,永遠不要使用 Tab。YAML 1.2 明確禁止使用 Tab 字元進行縮排(Tab 沒有縮排值——它們在剖析器的欄位計數器中顯示為 0)。如果您從將空格轉換為 Tab 的來源(部分聊天應用程式、網頁表單或 PDF)複製 YAML,驗證器會以確切位置標記每個 Tab。
YAML 錨點(&)與別名(*)讓您可以定義一次值並在同一文件中多次參照它。例如:`defaults: &defaults timeout: 30 retries: 3` 定義了一個錨點,而 `service_a: <<: *defaults` 將這些預設值合併到 service_a 中。這在 Docker Compose 中廣泛用於在服務間共享通用組態,在 Kubernetes 中用於減少大型清單中的重複。
YAML 中的多行字串有兩種風格:字面區塊純量(|),保留換行——用於 Shell 指令碼、SQL 查詢或任何換行重要的內容;以及折疊區塊純量(>),將換行折疊為空格(類似 HTML 的處理方式)——用於長段落、描述或應重新排版的文字。使用 |-(移除尾隨換行)或 |+(保留尾隨換行,包括額外的換行)來覆寫預設的尾隨換行行為。
YAML 對註解(# 註解)的支援是其在組態檔方面優於 JSON 的最大優勢。註解讓您可以記錄為何選擇某個值、連結到 Jira 問題單、標記 TODO 與說明不明顯的設定——全部不會破壞剖析器。JSON 與 JSON5 的變通方案(如 "__comment": "explanation")是駭客手法;在 YAML 中,註解是一等公民。
YAML 合併鍵(<<)是一種特殊的映射鍵,將一個映射中的鍵合併到另一個映射中。它是 YAML 1.1 規範的一部分,雖然不在 YAML 1.2 核心中,但仍被廣泛支援。Docker Compose 大量使用合併鍵與錨點來定義服務範本。然而,合併鍵在巢狀映射中存在已知的邊界情況——請明確表示對深層合併與淺層合併的期望。
在 CI/CD 中於部署前驗證 YAML 檔案。一個在本機測試通過但在 CI 中失敗的格式錯誤 YAML 浪費開發者時間。將 YAML lint 步驟新增到您的管線中:`yamllint .` 或 `python -c "import yaml; yaml.safe_load(open('config.yaml'))"`。我們的線上驗證器現在整合了 GitHub Actions——在您的儲存庫中新增一個顯示 YAML 組態驗證狀態的徽章。
在除錯因神秘的「error converting YAML to JSON」而無法啟動的 Kubernetes Pod 時,問題幾乎總是清單中的 YAML 格式錯誤。我們的格式化器捕捉縮排錯誤、重複的鍵(YAML 中最後一個值無聲勝出——這是設定被神秘忽略的常見原因),以及放置在錯誤巢狀層級的欄位。格式化您的清單,然後使用 kubectl 重新套用。
常見問題解答
YAML 的可讀性是有代價的——一個縮排錯誤就能中斷整個部署。我們的格式化器與驗證器能即時捕捉這些錯誤,並提供人類可讀的錯誤訊息與確切的行號。無論您正在撰寫 Kubernetes 清單、Docker Compose 檔案或 CI/CD 管線,都可以在瀏覽器中免費格式化與驗證您的 YAML。
免費試用此工具 →open_in_new