YAML 转 TOML

把 YAML 配置翻译为 TOML,支持缩进和键排序。

把 YAML 配置翻译为 TOML,支持缩进和键排序。 把 YAML 配置翻译为 TOML,支持缩进和键排序。

输出

背景知识

YAML 与 TOML 的重叠与差异

YAML 与 TOML 都以人类可读的配置格式为目标。它们能表达的数据高度重叠(映射、序列、标量),但语法不同,在一些角落情况也有差异。YAML 支持标签、锚点和多行标量;TOML 区分内联表与表数组,并把日期视为一等类型。

当把配置从一种工具的格式迁移到另一种时,YAML→TOML 转换器最有用:比如把 Kubernetes 清单放到 pyproject.toml 片段里,或把 Ansible 清单改写成 Cargo [dependencies] 表。

转换后保留的内容

映射(YAML 中的 key: value)根据上下文变成 TOML 表或键值对。序列变成内联数组或 [[array.of.tables]] 表头。标量只要能干净映射就保留:字符串、整数、浮点、布尔、ISO 日期。

无法保留的内容

解析时锚点和别名会被展平;转换后的 TOML 在每个别名处都是具体值,这通常是消费者想要的。YAML 的 !!binary 标签无法保留,因为 TOML 没有等价物。注释会被有意丢弃——两种格式都不保证往返保留。

工作流建议

提交转换后的 TOML 前,请运行项目的 TOML linter(taplo、toml-check 等)。转换器只翻译语法,不翻译风格;linter 能捕获转换器检测不到的引号、缩进和键序问题。

基于两个 MIT/BSD-3 协议的库实现(已内置于 public/assets):js-yaml 用于解析,smol-toml 用于生成。输入在本地处理。

常见问题

转换器会处理 YAML 锚点吗?
会。解析时锚点(&name value)和别名(*name)会被展开,因此 TOML 在每个别名处都是解析后的值。原始锚点名称不会保留。
YAML 中的注释会保留吗?
不会。所有主流解析器都会剥离 YAML 注释。如有需要请在 TOML 中手动加回。
转换器能处理多文档 YAML 文件吗?
不能。本工具把每次上传当作单一文档处理。多文档请使用专用工具。
TOML 支持多行字符串吗?
支持。对于含换行的 YAML 标量,转换器输出 TOML 的三引号基础字符串,保持可读性。
YAML 的 !!binary 数据呢?
TOML 没有 base64 二进制等价物。转换器会警告并跳过这些值,避免静默损坏。
我的 YAML 会上传吗?
不会。解析在本地通过 js-yaml 完成,TOML 输出在本地通过 smol-toml 生成,不会上传到服务器。