Saltar al contenido

Formateador y validador de YAML

YAML Formatter & Validator

Reindenta el YAML de forma uniforme, lo valida y señala los tabuladores y las anclas que rompen los analizadores.

Reindenta un archivo YAML de forma uniforme y te dice qué leería distinto otro parser. Es un lector de YAML 1.2 que conserva comentarios, anclas, etiquetas y escalares de bloque, así que la salida es tu documento con la disposición arreglada, no un viaje de ida y vuelta por un modelo de datos que habría tirado tus comentarios.

🔒 Se ejecuta por completo en tu navegadoryamlformatvalidateconfig
Salida
Indentación

YAML de entrada

Suelta un archivo .yaml

Se lee solo en esta pestaña. No se sube nada.

YAML formateado

Formateado.

Se leyó, pero los analizadores pueden discrepar en esto

  • 19:22 — `no` es la cadena "no" en YAML 1.2. Un analizador de YAML 1.1 lo lee como booleano: ponle comillas, o escribe true/false, para que ambos coincidan.

Documentos

1

Claves

30

Elementos de lista

8

Anclas / alias

1 / 1

Avisos

1

Lo que este formateador hace y lo que no

  • · Se lee con el esquema core de YAML 1.2. yes y no y on y off son cadenas, y 0755 es el 755 decimal, no octal. Los valores que un analizador de 1.1 leería de otra forma se señalan arriba como avisos.
  • · Los comentarios, las anclas (&), los alias (*), las etiquetas y los escalares de bloque | y > se conservan todos. El orden de los valores tampoco se cambia.
  • · La indentación con tabuladores, las claves duplicadas, un alias usado antes de definirse y una comilla sin cerrar se detectan como errores, con su línea y su columna.
  • · La clave de fusión << es una función de 1.1, pero docker-compose y Ansible la usan tanto que se aplica al convertir a JSON, con un aviso que lo dice.
  • · Un comentario dentro de una colección en flujo como [a, b] no tiene línea a la que engancharse y se pierde. Todos los demás comentarios sobreviven.

Para convertir a JSON o TOML usa el conversor JSON ⇄ YAML, y para comprobar un documento contra un esquema usa el validador de JSON Schema.

Cómo se usa

  1. Pega el manifiesto o la configuración

    Un manifiesto de Kubernetes, un archivo de CI, un docker-compose. Varios documentos separados por `---` se leen como un flujo y se cuentan por separado.

  2. Elige el estilo de lista

    El único ajuste por el que la gente discute de verdad: si `- item` va al nivel de su clave o indentado debajo. Ambos son YAML válido; los manifiestos de Kubernetes usan por convención la forma al nivel.

  3. Lee las advertencias

    Los valores cuyo significado depende de qué versión de YAML implemente el lector —`yes`, `no`, `0755`— se listan con línea y columna. Esos son los que rompen un despliegue en otra herramienta.

  4. O cambia la salida a JSON

    El mismo análisis, renderizado como JSON, que es la forma más rápida de ver a qué se resolvió realmente un valor, incluido en qué se expandió una clave de fusión.

Preguntas frecuentes

¿Por qué `no` es aquí una cadena?

Porque el esquema core de YAML 1.2 lo dice: los únicos booleanos son `true` y `false`. YAML 1.1 —que PyYAML sigue usando por defecto— lee `no`, `off` y `n` como falso. Cualquier valor en el que los dos discrepen se marca como advertencia, porque es una diferencia real de comportamiento, no de estilo.

¿Se conservan mis anclas y alias?

En la salida YAML, sí: `&res` y `*res` salen como los escribiste, y el recuento se muestra en las estadísticas. La vista JSON tiene que expandirlos, porque JSON no tiene forma de decir «el mismo nodo otra vez».

¿Admite claves de fusión?

`<<:` es una característica de YAML 1.1, no parte de 1.2, pero los archivos de docker-compose y Ansible la usan constantemente, así que se aplica al convertir a JSON, con una advertencia que dice que eso fue lo que ocurrió. En la salida YAML se deja exactamente como está escrita.

Un comentario desapareció. ¿Por qué?

Casi con certeza estaba dentro de una colección de flujo: `[a, # note\n b]`. Una colección de flujo se reimprime como una sola línea, y un comentario ahí no tiene línea a la que engancharse. Todo comentario en su propia línea, o al final de un valor, sobrevive.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.