YAML 格式化与验证器
粘贴 YAML,点击格式化得到 2 空格缩进的整洁 YAML,或验证检查语法。YAML 1.2 严格模式。无需上传。
- 将 YAML 粘贴到左侧文本区。
- 点击「格式化」让其经过解析器并输出规范化 YAML。
- 点击「验证」只检查语法,不修改输入。
- 错误会指出问题所在的行和列。
它能做什么?
使用 js-yaml 的 YAML 1.2 严格模式解析,然后以 2 空格缩进、100 字符行宽与一致的引号策略重新输出。「验证」按钮在不修改输入的情况下检查语法并只报告第一个错误。输出与输入在语义上相等 — 值、类型与结构都被保留。
示例
杂乱的 YAML 输入:
name: Ada
tags: [math,logic]
active:true 格式化输出:
name: Ada
tags:
- math
- logic
active: true 常见 YAML 错误及修复
严格模式下的 YAML 1.2 对空白非常敏感。下列模式覆盖了大多数解析失败。
- 使用 Tab 而不是空格。 YAML 1.2 不允许用 Tab 缩进。请把所有 Tab 替换为空格。
- 缩进层级不一致。 在 4 空格同级下出现 2 空格缩进的子项会失败。请选定一种缩进宽度并贯穿全文。
- 布尔陷阱。 YAML 1.1(并非此处使用的模式)中 `yes`、`no`、`on`、`off` 会被解析为布尔。js-yaml 使用 1.2,但依赖旧行为的真实输入仍会让人惊讶。请给模糊值加引号: `country: "NO"`。
- 未加引号的特殊字符。 以 `:`、`?`、`&`、`*`、`!`、`|`、`>`、`\'`、`"`、`%`、`@`、`` ` `` 开头的值需要加引号。
- 未关闭的引号。 缺少闭合引号会让解析器把后面的内容都吸收进同一字符串。报告的行号可能远离实际错误位置。
- 锚点 / 别名不匹配。 未声明的 `&name` 锚点被 `*name` 别名引用会出错。请确认每个别名前都已声明同名锚点。
常见问题
格式化会改动我的数据吗?
不会 — 只会改变表现层细节(空白、引号、顺序)。解析后的值图相同。再次解析格式化结果会得到与原始相同的内存结构。
格式化会保留注释吗?
不会。js-yaml 通过解析-再输出的过程会丢失注释。如果需要保留注释的格式化,可以使用其他库(如带选项的 yaml.js)或 `prettier --parser yaml` 这样的 CLI 工具。
可以自定义缩进吗?
当前构建固定为 2 空格。若要自定义,可在命令行运行同一个库 js-yaml,并传入 `{ indent: 4 }` 等选项。
可以处理多大的 YAML 文件?
约 10 MB 后文本框会变慢。多数配置文件远小于 1 MB。
我的 YAML 会被上传吗?
不会。一切都在你的浏览器里运行 — 输入由本页 JavaScript 解析与重新序列化,从不发送到任何服务器。
是否会做样式 lint(比如重复键)?
js-yaml 默认配置会拒绝重复键(YAML 1.2 严格要求)。其他风格问题(如不一致的引号或锚点命名)不会标记 — 那需要 yamllint 这样的专用 linter。