YAML 基本語法規則

學習 YAML 的第一步是了解它的格式規範。YAML 是一門對格式非常嚴格的語言(尤其是縮排),一旦格式錯誤,程式在解析時就會報錯。

本章將帶你掌握 YAML 最核心的語法規則。

縮排與階層 (Indentation)

YAML 使用縮排來決定資料的階層關係,這點與 Python 非常相似。

  1. 必須使用空格:YAML 規範中禁止使用 Tab 鍵進行縮排,只能使用空格 (Space)。
  2. 空格數量一致:雖然沒有規定一定要縮排幾個空格(通常是 2 個或 4 個),但同一個階層的成員必須對齊。
# 正確的縮排 (使用 2 個空格)
user:
  name: "Mike"
  age: 25

# 錯誤範例:同階層未對齊
database:
  host: "localhost"
    port: 3306  # 這裡多了一個縮排,會導致結構判讀錯誤
大部分的現代編輯器(如 VS Code)都會自動將 Tab 鍵轉換為空格,但在撰寫 YAML 時仍需特別留意。

大小寫敏感 (Case Sensitivity)

YAML 對大小寫是極度敏感的。

# 這代表兩個不同的鍵值
status: "active"
Status: "pending"

在撰寫設定檔時,務必確認你的鍵名 (Key) 與預期使用的軟體規範完全一致。

鍵值對 (Key-Value Pairs)

YAML 的基礎單元是「鍵值對」,寫法非常直覺:使用一個冒號 : 加上一個空格

# 格式:鍵名: 值
website: "www.fooish.com"
pages: 100
重要! 冒號後面一定要有一個空格,否則 YAML 解析器會將其視為字串的一部分而非鍵值對。

註解 (Comments)

在 YAML 中,所有以 # 開頭的內容都會被視為註解。你可以將註解放在獨立的一行,或是放在程式碼的後方。

# 這是獨立一行的註解
version: "3.9" # 這是行尾的註解

單一檔案中包含多個文件

有時候我們需要在同一個 .yaml 檔案中定義多個獨立的文件(這在 Kubernetes 設定中非常常見)。

  • 使用 --- (三個減號) 代表一個文件的開始
  • 使用 ... (三個點) 代表一個文件的結束(非必填)。
---
# 文件 1
app: "web-server"
---
# 文件 2
app: "database-server"
...

總結基本規則

規則說明
縮排必須使用空格,嚴禁使用 Tab。
冒號鍵與值之間使用 : (冒號後要有空格)。
大小寫Namename 是不同的。
註解使用 # 字號。
文件分割使用 --- 來區隔同檔案內的多個文件。