TOML的全名是Tom’s Obvious, Minimal Language(湯姆的明顯、極簡語言)。它的設計目標是成為一個比JSON更易讀、比YAML更嚴謹的組態設定格式。不同於YAML依賴縮排,TOML主要是透過方括號 [] 來定義資料結構。
核心規則
三個特點:
使用等號
=賦值
TOML的鍵值對一律使用等號(例如title = "我的文章")。對空格非常寬容
等號兩邊有沒有空格都沒關係(title=1和title = 1都對),而且縮排只為了美觀,不影響程式解析。嚴格的型態與字串要求:字串必須用引號包起來,布林值必須是小寫的
true或false。
四大基礎語法與資料型態
在Markdown的文章開頭(Front Matter),你會用到的TOML語法主要有以下四種:
- 基礎鍵值對(Key-Value)
tomltitle = "我的第一篇文章" # 字串:TOML的字串「一定要」加引號
draft = false # 布林值:必須小寫
weight = 10 # 整數
price = 99.9 # 浮點數
- 字串與引號(String)
TOML區分雙引號與單引號的方式:
雙引號
""(基本字串):支援跳脫字元(例如\n代表換行)。tomldescription = "第一行\n第二行"單引號
''(字面字串):不解析任何跳脫字元,裡面寫什麼就完全顯示什麼(適合用來寫網址或正則表達式)。tomlimage_url = 'https://example.com'
- 陣列 / 列表(Array)
用來設定多個同類型的資料(如文章標籤)。
單行寫法(最常用):
tomltags = ["網站架設", "Hugo", "教學"]多行寫法(適合項目很多時):
tomltags = [ "網站架設", "Hugo", "教學" ]
- 表格 / 物件(Table / Object)
當設定下還有子設定時,TOML使用方括號 [鍵名] 來宣告一個獨立的區塊(稱為Table)。
# 宣告一個叫做author的區塊
[author]
name = "Sandy"
email = "sandy@example.com"
# 宣告另一個叫做seo的區塊
[seo]
keywords = ["搬家", "SSG"]
進階技巧
多行文字處理(寫摘要、長敘述):
TOML使用三個引號來處理多行文字。
- 三個雙引號 “""(支援跳脫)
tomldescription = """
這是第一行文字。
這是第二行文字,\n這裡會觸發換行。
"""
- 三個單引號 ‘’’(純文字、不跳脫)
tomldescription = '''
這是一段很長的文章摘要,
裡面的 "雙引號" 或 \n符號都會被原封不動保留,
最適合拿來貼程式碼片段或複雜內文。
'''
實戰演練
把上述所有語法組合起來成一個完整的Markdown TOML範本,一篇文章的開頭看起來就像這樣:
+++
title = "掌握Hugo中的TOML語法:從基礎到進階完整指南"
date = 2026-01-01
draft = false
weight = 1
author_name = "林小明"
is_featured = true
read_time_minutes = 5
categories = [
"網頁開發",
"前端技術"
]
tags = ["Hugo", "TOML", "Markdown"]
[author_details]
title = "資深開發者"
website = "https://example.com"
[author_details.contact]
email = "xiaoming@example.com"
seo = { keywords = "toml教學, hugo設定", robots = "noindex" }
poetic_quote = """
床前明月光,
疑是地上霜。
舉頭望明月,
低頭思故鄉。"""
post_summary = """
這是一段為了教學而編寫的超長文章摘要。\
雖然我們在TOML設定檔中將它拆成了兩行書寫,\
但因為使用了反斜線符號,Hugo在解析時會將它們自動串接成同一個流暢的長句。\
"""
+++