TOML 转 YAML

把 TOML 文档翻译为 YAML,支持键排序和缩进控制。

把 TOML 文档翻译为 YAML,支持键排序和缩进控制。 把 TOML 文档翻译为 YAML,支持键排序和缩进控制。

输出

背景知识

为什么要在 TOML 与 YAML 之间转换

两种格式都面向人类编辑的配置文件,但各自的生态不同。TOML 是 Python 打包(pyproject.toml)、Rust(Cargo.toml)、GitHub 工作流以及许多 CLI 工具的标准。YAML 是 Kubernetes、Ansible、Docker Compose、老式 GitHub Actions 以及许多 CI 系统的标准。

有时你需要在两种格式里表达同一份配置:在 Ansible playbook 里复用 pyproject.toml 的片段,或把 Kubernetes ConfigMap 转写到 Cargo.toml 的依赖块中。TOML→YAML 转换器让翻译保持机械性。

转换后保留的内容

映射、序列、标量(字符串、整数、浮点、布尔、ISO 日期)、内联表和点键都能干净翻译。多行字符串会输出为 YAML 块标量,保持原作者选择的视觉布局。

无法保留的内容

YAML 标签(!!str、!!int 等)仅在底层类型与 YAML 默认推断不一致时输出。实际上解析器的选择与大多数读者期望一致。默认不会生成 YAML 锚点,因为 TOML 每个值都完全自包含;如果想要共享子树,请手动引入。

工作流建议

转换后、提交前,请用 linter(yamllint、kubeconform 等)检查 YAML。转换器翻译语法、不翻译风格:它不知道你希望遵循 snake_case 还是 kebab-case,也不确定 2 空格还是 4 空格。项目约定由你决定。

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

常见问题

转换器支持 TOML 表数组吗?
支持。`[[name]]` 表头会变成 `name` 键下的 YAML 序列元素,保留表的顺序。
YAML 输出会保留我的 TOML 注释吗?
不会。TOML 注释会被解析器剥离。如有需要请在 YAML 输出中手动加回。
TOML 的日期在 YAML 中如何表示?
日期与日期时间会变成同样 ISO 表示的 YAML 字符串。大多数 YAML 消费者用各自语言的日期库解析。
TOML 的内联表呢?
会变成单行的嵌套 YAML 映射。某些风格指南要求块式以提升可读性;若 linter 抱怨,请手工转换。
为什么输出用双引号包围字符串?
YAML 单引号字符串禁止转义序列,YAML 裸标量有保留关键字;双引号是任意文本往返最安全的默认选择。
我的 TOML 会上传吗?
不会。解析在本地通过 smol-toml 完成,YAML 输出在本地通过 js-yaml 生成,不会上传到服务器。