YAML 簡介與入門教學
在現代的開發流程中,我們經常需要與各種設定檔打交道。無論是 GitHub Actions 的工作流、Docker Compose 的容器編排,還是 Kubernetes 的資源定義,你都會看到 YAML 的身影。
YAML 已經成為處理複雜資料與設定的首選格式之一,其最核心的魅力在於它對人類非常友善。
什麼是 YAML?
YAML 是「YAML Ain't Markup Language」(YAML 不是標記語言)的遞迴縮寫。雖然它的名字裡說自己不是標記語言,但它確實被廣泛用來表達資料的結構性。
與傳統的 XML 或是 JSON 相比,YAML 的設計更加注重可讀性與簡潔性。它使用「縮排」來表示資料層級,減少了大量的括號、標注與引號,讓設定檔看起來更像是清晰的大綱。
YAML 起初的含義是 "Yet Another Markup Language",但後來為了強調其以「資料」為核心而非傳統文件的標記,才改為現有的遞迴縮寫。
為什麼要使用 YAML?
YAML 如此受歡迎,主要有以下幾個優點:
- 極高的可讀性:即使是非技術人員,也能一眼看出資料的階層關係。
- 層級結構清晰:透過強制縮排,資料的父子關係一目了然。
- 語法精簡:不需要處理 JSON 的大括號
{}或 XML 的標籤<tag></tag>。 - 強大的資料表達能力:支援進階的資料引用(錨點與別名)、多行字串處理等功能。
- 廣泛的軟體支援:現今主流的程式語言(如 Python, Go, Java, Node.js)都有成熟的函式庫來解析 YAML。
YAML 的常見用途
如果你是開發者或 DevOps 工程師,你幾乎無法避開 YAML:
- 軟體設定檔:例如 Spring Boot (
application.yml)、Ruby on Rails 的資料庫配置。 - CI/CD 流水線:GitHub Actions (
.github/workflows/*.yml)、GitLab CI。 - 基礎設施即程式碼 (IaC):Kubernetes 的 Deployment 文件、Docker Compose (
docker-compose.yml)。 - 資料交換:雖然 JSON 在 API 交換中佔主導地位,但在需要人工頻繁編輯的資料場景下,YAML 是更好的選擇。
YAML 與 JSON 的關係
值得一提的是,YAML 1.2 是 JSON 的超集。這意味著任何有效的 JSON 檔案,理論上都是合法的 YAML 檔案。
# 這是 YAML 的寫法
server:
port: 8080
name: "My Server"
# 這是同樣意思的 JSON 寫法
{
"server": {
"port": 8080,
"name": "My Server"
}
}
可以看到,YAML 透過移除多餘的符號,大幅提升了視覺上的清爽度。