什么是YAML 格式化 / 校验?
YAML 校验工具解析 YAML 文本并报告语法错误的行号,同时可把内容规范化输出为统一缩进。它常用于排查 Kubernetes 清单、CI 配置与 docker-compose 里的缩进和类型问题,解析在浏览器内完成。
怎么用YAML 格式化 / 校验?
- 1粘贴 YAML 内容,支持多文档(以 --- 分隔)。
- 2查看校验结果:通过时会显示解析出的文档数量与顶层键。
- 3出错时按提示的行号定位,YAML 错误几乎都源自缩进或冒号后缺空格。
- 4需要统一风格时,用规范化输出替换原文件内容。
在代码里怎么实现?
一次性操作用上面的工具,重复性工作建议固化到脚本或项目里。
Shell
Node.js
# 校验并输出规范化结果 yq . config.yaml # 只校验 python -c "import sys,yaml;yaml.safe_load(open(sys.argv[1]))" config.yaml
常见错误与排查
| 现象 | 成因 | 修复 |
|---|---|---|
| mapping values are not allowed here | 冒号后面缺少空格,或同一行出现了两个冒号结构。 | 确保每个 key: value 的冒号后有一个空格。 |
| found character that cannot start any token | 使用了制表符缩进,YAML 规范只允许空格。 | 把所有制表符替换为空格,并在编辑器里禁用 tab 缩进。 |
| on 被解析成了 true | YAML 1.1 会把 on/off/yes/no 当作布尔值,GitHub Actions 的 on 字段常被误解析。 | 需要字符串时用引号包裹,如 "on"。 |
常见问题
YAML 报缩进错误但我看不出问题,怎么排查?+
优先检查三件事:是否混用了制表符与空格、列表项的短横线是否与父键对齐、以及同级键的缩进是否完全一致。把内容粘进来校验后,工具给出的行号通常就是缩进层级第一次不一致的位置。
能校验 Kubernetes 清单的字段是否正确吗?+
本工具只校验 YAML 语法层面,不校验 Kubernetes 的 Schema。语法通过但字段拼错时仍会被 kubectl 拒绝,Schema 校验需要 kubeconform 或 kubectl --dry-run=server。