工具系列:toml 文件格式
2025-07-26
TOML(Tom’s Obvious, Minimal Language)是一种简洁易读的配置文件格式,旨在取代更复杂的格式(如 JSON、YAML 或 INI)。它的核心设计目标是直观性和最小化语法复杂性,使人类和机器都易于编写与解析。
1.核心特点
- 语义清晰
键值对使用 =
分隔,类似变量赋值,例如:
title = "TOML Example"
port = 8080
- 强类型支持
支持字符串、整数、浮点数、布尔值、日期时间、数组等数据类型:
enabled = true
pi = 3.14
colors = ["red", "green", "blue"]
- 层级结构
通过 [section]
定义配置区块,支持嵌套(用 .
分隔):
[server]
ip = "192.168.1.1"
[database.mysql]
user = "admin"
password = "pass123"
- 注释友好
使用 #
添加注释:
# 这是服务器配置
[server]
port = 80 # 默认HTTP端口
- 不支持复杂表达式
避免逻辑运算(如函数、条件判断),专注于静态配置。
2.与相似格式对比
格式 | 可读性 | 复杂度 | 典型用途 |
---|---|---|---|
TOML | 4星 | 低 | 配置文件(如 Rust 的 Cargo) |
YAML | 3星 | 中 | K8s/Ansible 配置 |
JSON | 2星 | 中 | API 数据交换 |
INI | 3星 | 低 | 传统Windows配置 |
TOML 优势:比 JSON 易读,比 YAML 简洁(无缩进陷阱),比 INI 功能强。
3.典型使用场景
- 软件配置
Rust 的包管理器 Cargo
用 Cargo.toml
管理依赖:
[package]
name = "my_project"
version = "1.0.0"
[dependencies]
serde = "1.0"
- 静态站点生成
Hugo 的 config.toml
配置网站参数:
baseURL = "https://example.com/"
title = "My Blog"
theme = "hyde"
- 工具链配置
如 Python 的 pyproject.toml
(PEP 518 标准):
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
4.完整示例
# 全局配置
app_name = "Weather App"
debug_mode = false
[server]
host = "0.0.0.0"
port = 3000
timeout_secs = 30
[database]
url = "mysql://user:pass@localhost/db"
pool_size = 5
[logging]
level = "info" # 可选: debug, warn, error
file_path = "/var/log/app.log"
5.为什么选择 TOML?
- 开发者友好:语法接近自然习惯,减少学习成本。
- 无歧义:规范严格(官方标准),各语言解析器行为一致。
- 轻量:适合中小型配置,无需 YAML/JSON 的复杂结构。
适用建议:优先 TOML 管理
简单配置
;若需复杂嵌套结构(如 K8s),考虑 YAML。
原文地址:https://ningg.top/intro-of-toml/