配置简化:YAML To TOML — Numio
把单个 YAML 文档转换为 TOML。嵌套映射变为 [table.sub] 段,映射列表变为 [[array of tables]],值为 null(~)的键会被删除。
项目改用 pyproject.toml、Cargo、Hugo 或 Netlify 的 TOML 设置时,把 YAML 配置改写为 TOML。
YAML
TOML
适用场景
- 项目改用 pyproject.toml、Cargo、Hugo 或 Netlify 的 TOML 设置时,把 YAML 配置改写为 TOML。
- 选定配置格式之前,查看嵌套的 YAML 结构写成 TOML 表会是什么样子。
使用方法
- 将顶层为映射的单个 YAML 文档粘贴到左侧编辑器,或用加载文件按钮打开 UTF-8 文件。
- 修正提示的 YAML 错误(缩进、多个文档或顶层为列表)。
- 检查 TOML 中的日期、null 和列表,然后复制。
YAML
# docker-compose style
version: "3.9"
services:
web:
image: nginx:1.27
ports:
- "8080:80"
environment:
DEBUG: false
WORKERS: 4
db:
image: postgres:16TOML
version = "3.9" [services.web] image = "nginx:1.27" ports = [ "8080:80" ] [services.web.environment] DEBUG = false WORKERS = 4 [services.db] image = "postgres:16"
功能与限制
YAML 按 YAML 1.2 读取:yes 仍是字符串 "yes",0o17 变为 15,2024-01-05 这类不带引号的日期变为 TOML 字符串,而不是 TOML 日期。
注释和锚点不会原样保留:别名(*name)和 <<: *anchor 合并键会展开为所引用的值。
只接受一个文档;带有 --- 分隔符的输入会报多文档错误。顶层为列表,或映射与普通值混合的列表,会被拒绝并给出说明。
在浏览器中运行(yaml + @iarna/toml)。[services.web.environment] 这类子表缩进两个空格,TOML 会忽略这种缩进。
FAQ
可以把 docker-compose.yml 转换为 TOML 吗?
结构可以转换(如示例所示),但 Docker Compose 只读取 YAML。请用来查看或复用数据,不要当作 Compose 文件。
null 值会怎样处理?
值为 ~ 或 null 的键会被省略,因为 TOML 没有 null 类型。
支持 YAML 锚点和合并键吗?
支持。别名(*name)会展开,<<: *base 会把 base 的键复制到该映射中,与其并列写出的键优先。TOML 中显示的是合并后的值。