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文件。