跳到正文

TOML 格式化与校验

TOML Formatter & Validator

格式化并校验 TOML,统一表的排列顺序和内联表的写法。

规范化一份 TOML 文件的空白——`key = value`、表头周围的空白、数组折行——并顺便按 TOML 1.0 规范检查它。两个读取器扫过这个文件:一个懂拼写规则并保留注释,一个懂语义规则并生成 JSON 视图。

🔒 完全在你的浏览器里运行tomlformatvalidateconfig
输出
内联表
数组换行宽度

TOML 输入

拖入 .toml 文件

只在这个标签页里读取,不上传。

整理后的 TOML

整理好了。

表

5

键值对

13

注释

1

检查

通过

它改什么,不改什么

  • · 会统一的是 key = value周围的空格、 [ a . b ] 这样的表头里的空白,以及数组和内联表内部的间距,并在每个表头前留一个空行。
  • · 短数组写成一行;超过换行宽度的数组,或者里面带注释的数组,一个元素一行,末尾加逗号。
  • · 字符串、数字和日期原样保留。把 1_000写成 1000,或者把 0xff写成 255,那是编辑,不是整理。
  • · 不需要引号的键("name")会去掉引号;需要引号的键("127.0.0.1")用字面引号写出来。
  • · 前导零、放错位置的下划线、 True、跨多行的内联表、重复的键、定义了两次的表,都按 toml.io 上的 TOML 1.0 规范拒绝。

要转成 JSON 或 YAML,请用 JSON ⇄ TOML 互转。

怎么用

  1. 粘贴文件

    一份 `Cargo.toml`、`pyproject.toml`、`netlify.toml`。空白不一致正是重点——要修的就是这个。

  2. 设置数组折行宽度

    短数组留在一行;超过宽度的,或者里面带注释的,会变成一行一个元素并带尾随逗号。那个尾随逗号是让以后的 diff 只有一行的关键。

  3. 有帮助时再排序,否则别排

    键排序只移动键/值行,注释和空行留在原地。表排序对同一层级的表头排序,并把它们的子表一起带走。表数组的顺序是数据,所以从不触碰。

常见问题

为什么 `1_000` 没有被改写成 `1000`?

因为那是编辑,不是格式化。数字里的下划线、十六进制字面量、日期的精确写法都是作者选的。格式化器改空白和引号,值按原样保留。

它拒绝了我的文件,但另一个解析器接受了。

多半是 TOML 1.0 禁止而宽松读取器允许的东西之一:前导零、位置不对的下划线、大写 T 的 `True`、跨多行的内联表、重复的键,或者定义了两次的表。错误会说明是哪一种,并带行号。

切换到 JSON 时日期会怎样?

变成字符串,并有一条警告说明。TOML 把带偏移的日期时间、本地日期和本地时间当作真正的类型;JSON 一个都没有,所以文本被带过去,类型丢失。

注释会保留吗?

会,包括它相对于所属键的位置——这正是格式化器有自己的扫描器而不是复用转换器读取器的原因。注释数量显示在统计里。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。