YAML格式化校验
免费在线YAML格式化校验工具,支持美化、语法校验、缩进错误行号定位,适配K8s、docker-compose多文档配置调试,本地浏览器处理不上传,免登录即用。
0 次使用 0
输入
输出
version: '3.8'
services:
web:
image: nginx:1.25-alpine
ports:
- '80:80'
- '443:443'
environment:
- TZ=Asia/Shanghai
volumes:
- ./html:/usr/share/nginx/html:ro
deploy:
replicas: 2
resources:
limits:
cpus: '0.5'
memory: 256M
api:
image: registry.example.com/api:latest
restart: always
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: examplepass
MYSQL_DATABASE: appdb
volumes:
- db-data:/var/lib/mysql
volumes:
db-data: null
缩进
YAML缩进规则与常见坑
YAML用缩进表示层级,官方建议每层固定2个空格。它比JSON更灵活,也因此更容易踩坑,以下是出现频率最高的几个问题:
| 问题 | 错误示例 | 正确写法/说明 |
|---|---|---|
| 使用Tab缩进 | key: 后用Tab缩进 | YAML禁止Tab,只能用空格 |
| 同级缩进不一致 | 同级元素缩进空格数不同 | 同一层级元素缩进必须完全一致,差一个空格都会报错 |
| 冒号后缺空格 | key:value | 应为key: value,冒号后必须有一个空格 |
| 字符串含特殊字符未加引号 | msg: hello: world | 包含: # - {} []等字符时用引号包裹 |
| 数字/布尔被自动转换 | version: 1.0 | 需保持原文时加引号:"1.0"、"on"(yes/no/on/off都是布尔值) |
| 多文档分隔符误用 | 配置中误加 --- | 一个文件含多个---时是多个文档,普通配置误加会丢内容 |
常见问题
格式化后键的顺序和注释变了?
本工具的原理是「解析为对象再输出」,因此键会按内部顺序重新排列,注释和锚点(&anchor/*alias)信息会丢失。如果需要保留注释,建议使用编辑器的格式化功能;本工具更适合做语法校验和缩进修复。
为什么报错提示的行号和实际内容对不上?
js-yaml的报错行号通常指向「发现问题的位置」,而问题根源可能在上一行,例如上一行缩进多了空格、缺少冒号等。排查时建议连同报错行的上一行一起检查。
支持K8s多文档(---分隔)格式吗?
支持。输入中包含---分隔的多个文档时,会逐个校验并合并格式化输出,每个文档之间保留---分隔符,方便直接粘贴回K8s的单个YAML文件。