YAML Diff
可视化对比两个 YAML 文件差异:按路径(a.b[0].c)列出新增、删除、修改与数组元素移动,并提供并排视图与统计,非法 YAML 会指出行列位置。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
差异统计
两侧都填入 YAML 后即可看到差异
这个工具能做什么
- 上线前比对两份 K8s / Docker Compose / CI 配置,确认改动只影响预期的那几个字段,而不是整段被替换掉。
- 排查环境差异:把 staging 与 production 的 YAML 贴进来,一眼看出哪些键只在一边存在、哪些值被改过。
- 审阅别人提交的配置变更时,用它生成「路径 + 左右值」的清单,比逐行读 diff 更不容易漏掉嵌套字段。
- 检查数组顺序是否被误改:工具会把「插入/删除造成的位移」和「元素真的换了位置」区分开。
示例
输入
server: host: localhost port: 8080 tags: - a - b --- 右侧(改动后)--- server: host: 0.0.0.0 port: 8080 tags: - b - a
输出
~ server.host "localhost" → "0.0.0.0" > tags[1] → tags[0] "b" > tags[0] → tags[1] "a"
示例里上下两份分别填进左右两个输入框。server.port 两边相同所以不出现在差异里;路径用 a.b[0].c 的形式,交换位置的数组元素标成「移动」并同时给出移动前后的路径。
常见问题
它和文本 diff 有什么区别?
文本 diff 比的是字符行,键的顺序变了、缩进改了都会算成差异。这里先把两侧都解析成 YAML 对象再比结构,所以「同一份配置换了个键序」不会报差异,报出来的每一行都对应真实的字段变化。
数组元素的「移动」是怎么判断的?
先用最长公共子序列按元素签名对齐两侧;如果一侧是另一侧的子序列,说明差异只是插入/删除造成的位移,不算移动。只有剩余元素需要重新配对时才算「移动」,所以往数组中间插一条不会让后面所有元素都变成移动。
YAML 写错了会怎样?
解析失败会抛出 invalid-yaml,并在对应输入框下面标出 js-yaml 报出的行列位置与原因,而不是笼统地说「格式错误」。两侧中任意一侧写错都会给出提示,另一侧的内容不会被清空。
支持多文档 YAML(--- 分隔)和锚点吗?
解析用的是 js-yaml 的 Core schema,并打开了合并键与时间戳标签,所以锚点(&)、引用(*)、合并键(<<)和日期都能正确解析。每个输入框各放一份文档,多文档写法会按 js-yaml 的规则报错。
输入的内容会被上传吗?
不会。解析与比较全部在浏览器里用 JavaScript 完成,页面不发起任何网络请求,断网也能用,输入内容不会被记录。
关键词:yaml diffyaml 对比yaml 差异yml diffcompare yamlyaml 比较配置对比diff结构化对比side by side