YAMLTools logo

Comparar YAML: diff entre dos ficheros

Pega el YAML original y el modificado. YAMLTools compara los datos, no el texto: reordenar claves, cambiar comillas o editar comentarios no es un cambio. Lo que sí cambió sale por ruta —services.db.image: postgres:15 → postgres:16— y, en Docker Compose y Kubernetes, resumido en sus propios términos. Todo ocurre en tu navegador.

Ejemplo:

Original

YAML
Loading editor…

Modificado

YAML
Loading editor…

Pega un fichero YAML en cada lado para ver qué ha cambiado.

Anuncia aquí · Llega a miles de developers

Cómo funciona el diff de YAML

Datos, no líneas

Los dos ficheros se parsean y se comparan como datos. Una clave que se movió, un comentario que editaste o un valor que pasó de comillas simples a dobles son los mismos datos, así que no salen como cambio.

Cambios por ruta

Cada cambio lleva su ruta exacta —spec.template.spec.containers[name=api].image— y su valor anterior y nuevo. Las listas de elementos con nombre (contenedores, variables de entorno, puertos con nombre) se emparejan por nombre, así que reordenarlas tampoco es un cambio.

Resumido para tu tecnología

Si los dos ficheros son Docker Compose o Kubernetes, el diff se resume en sus términos: un servicio nuevo, una imagen que sube de versión, réplicas 2 → 3, un contenedor nuevo en un Deployment, un Service que pasa a LoadBalancer.

Qué cuenta como cambio

Cuenta: valores añadidos, eliminados o cambiados; elementos de lista que entran o salen; una lista cuyo orden cambió; un valor que cambia de tipo (8080 frente a "8080").

Se ignora: el orden de las claves, los comentarios, las líneas en blanco, el ancho de la indentación, el tipo de comillas, el estilo flow o bloque ([1, 2] frente a una lista con guiones) y las anclas una vez expandidas.

Cuándo usarlo

Revisar una actualización de Docker Compose

Pega el docker-compose.yml antiguo y el nuevo para ver qué servicios cambian de imagen, puertos o entorno antes de lanzar docker compose up.

Revisar un despliegue de Kubernetes

Compara los manifiestos de dos versiones aunque kubectl o Helm hayan reordenado los documentos: los recursos se emparejan por kind y nombre.

Encontrar diferencias entre entornos

Compara la configuración de staging y producción y obtén una lista limpia de lo que es distinto, lista para pegar en una pull request como Markdown.

Preguntas frecuentes

¿En qué se diferencia de un diff de texto normal?

Un diff de texto compara líneas, así que reordenar claves o reformatear un fichero da decenas de cambios falsos. Este diff de YAML compara los datos ya parseados: solo salen los cambios reales, cada uno con su ruta y su valor anterior y nuevo. La vista lado a lado sigue ahí cuando quieres ver el texto.

¿Ignora el orden de las claves y los comentarios?

Sí. En YAML el orden de las claves de un mapa no significa nada y los comentarios no son datos, así que ninguno cuenta como cambio. El orden de los elementos de una lista sí importa, por eso una lista reordenada sale como reordenada.

¿Compara manifiestos de Kubernetes con varios documentos?

Sí. Los documentos separados por --- se emparejan por kind y metadata.name (y namespace), así que un Deployment se compara con el mismo Deployment aunque los ficheros listen los recursos en otro orden. El resto de ficheros con varios documentos se emparejan por posición.

¿Puedo comparar YAML con JSON?

Sí. JSON es YAML 1.2 válido: puedes pegar un JSON en un lado y un YAML en el otro y solo verás las diferencias de datos.

¿Se sube mi YAML a algún sitio?

No. La comparación ocurre entera en tu navegador. El enlace para compartir lleva los dos ficheros comprimidos dentro del fragmento de la URL (#), que los navegadores nunca envían al servidor.