YAML 格式化工具
将 YAML 整理为统一的缩进宽度,或转换为 JSON。可检测制表符混入和缩进不一致等问题。
什么是 YAML 格式化工具
YAML 格式化工具可以将缩进宽度不统一的 YAML 重新整理为 2 个或 4 个空格的统一缩进,并在整理的同时检查语法是否正确。配置文件在反复复制粘贴和手动编辑之后很容易出现缩进错乱,而很多时候直到 CI/CD 流水线或配置管理工具报错才会发现问题。本工具完全在浏览器内运行,因此可以在不将敏感配置内容发送到外部服务器的情况下完成检查。
本工具基于自研的轻量级解析器,面向 Docker Compose、GitHub Actions、Kubernetes 清单等场景中常用的“常见子集”——映射、列表、内联流式集合以及基本标量类型。它不支持锚点(&)、别名(*)、多文档、块状标量(|、>)等高级功能,如果需要处理用到这些特性的 YAML,请配合完整功能的解析器一起使用。
YAML 格式化工具的使用方法
- 粘贴 YAML 将需要整理的 YAML 粘贴到左侧的输入框。如果手头没有可用的内容,点击“示例”按钮即可插入一段用于测试的 YAML。
- 选择模式 选择“格式化・验证”来检查语法并统一缩进,或选择“转换为 JSON”将 YAML 内容渲染成 JSON。
- 选择缩进宽度 仅在“格式化・验证”模式下可选,从 2 个空格或 4 个空格中选择输出缩进,与项目现有规范保持一致即可。
- 查看输出结果 如果 YAML 有效,右侧会显示整理后的结果(或转换后的 JSON);如果无效,则会显示错误信息和行号,方便直接定位到出问题的那一行。
- 复制结果 点击“复制”按钮,将输出结果复制到剪贴板,随后可直接粘贴回配置文件中。
用好本工具的小技巧
- 本工具采用自研的轻量级解析器,支持 key: value 键值对、嵌套、列表,以及内联的
[a, b, c]、{a: 1}写法。 - 即使粘贴缩进不统一(例如 3 个或 5 个空格)的 YAML,只要能成功解析,就可以重新输出为统一的 2 或 4 个空格缩进。
- 在“转换为 JSON”模式下,可以直接预览将 YAML 内容转换成 JSON 的结果,方便与 CI 配置或 API 响应进行比较。
- 出现错误时会显示行号,请检查该行的缩进或冒号后面是否忘记加空格。
- YAML 规范禁止使用制表符缩进。建议在编辑器设置中开启“将制表符转换为空格”,以避免这类问题。
适用场景
提交前检查 CI 配置文件
在提交 GitHub Actions 或 GitLab CI 的 .yml 文件之前,用本工具检查一遍是否存在缩进错乱或误混入的制表符,可以避免流水线因语法错误而中断。
整理 Kubernetes 清单文件
由多人共同编辑的 Deployment、Service 清单文件很容易出现缩进宽度不统一的情况,可以先统一为团队约定的规范(例如 2 个空格)后再提交审阅。
校验 Docker Compose 文件
docker-compose.yml 中的缩进错误往往要到容器启动失败时才会被发现,提前用本工具检查语法和缩进的一致性会更加放心。
对照 YAML 与 JSON
当同一份配置或 API 数据需要同时以 YAML 和 JSON 两种格式使用时,可以用“转换为 JSON”模式查看转换结果,再配合基于 JSON 的其他工具或模式校验一起使用。
术语表
- YAML
- “YAML Ain't Markup Language”的递归缩写,是一种通过缩进表达层级结构的数据序列化格式,被广泛用作配置文件。
- 缩进
- 位于行首的空白字符,在 YAML 中用于表示父子层级关系。根据规范,缩进不能使用制表符。
- 映射(Mapping)
- 以“键: 值”形式表示数据的结构,相当于其他语言中的关联数组或对象。
- 列表(Sequence)
- 按顺序排列多个值的结构,每个项目以“- ”(连字符加空格)开头表示。
- 流式风格(Flow Style)
- 将映射或列表以
{a: 1}、[a, b, c]这样的形式写在同一行的内联写法,不依赖缩进即可简洁表达。 - 锚点与别名
- 用
&name定义内容后,通过*name在其他位置复用,可避免重复书写相同的值。本工具不支持该功能。 - 块状标量(Block Scalar)
- 使用
|(保留换行)或>(将换行折叠为空格)来书写多行字符串的方式。本工具不支持该功能。 - 挪威问题
- 不加引号的
no、yes等值会被解释为布尔值而非字符串,是 YAML 中广为人知的一个陷阱。
常见问题
|、>)等高级功能。no、yes、on、off,许多 YAML 实现会将其解释为布尔值,而不是普通字符串(例如挪威的国家代码)。如果希望将其作为字符串处理,需要用引号括起来,例如 "no"。
闲话 ― YAML 为何成为配置文件的主流选择
YAML(YAML Ain't Markup Language)是一种诞生于 2001 年的数据序列化格式。由于不需要闭合标签、外观比 XML 更简洁,自 2010 年代以来被广泛用作基础设施配置文件的格式,例如 Docker Compose、GitHub Actions 和 Kubernetes 清单文件都采用了 YAML。
不过,YAML“用缩进表达结构”的设计虽然对人类来说易读,却也存在一个弱点:复制粘贴时缩进很容易被打乱。尤其是当制表符和空格混用时,许多解析器不会报错,而是悄悄地将其解释为错误的结构,这很容易成为配置失误的温床。
此外还有一个著名的陷阱,被称为“挪威问题”。如果不加引号直接写国家代码 no,许多 YAML 实现会将其解释为布尔值 false。YAML 1.1 与 1.2 版本对哪些字符串会被视为布尔值的规定也有所不同,这也是不同实现之间兼容性问题的常见成因。