Formateador y validador YAML (YML)

Formatea, valida, compacta y descarga YAML conservando comentarios y ubicando errores con precisión.

El formato conserva los comentarios. La salida compacta elimina comentarios y usa el estilo de flujo.

¿Qué es el formateador YAML/YML?

YAML (YAML Ain't Markup Language) es un formato legible usado en configuración de aplicaciones, CI/CD, Docker Compose y definiciones de API. Esta herramienta formatea, valida y compacta YAML o YML en el navegador sin subir el contenido.

Cómo usarlo

  1. Pega YAML o YML en el editor.
  2. Elige sangría de dos o cuatro espacios y el ancho de línea.
  3. Selecciona Formatear YAML, Compactar YAML o Validar.
  4. Copia el resultado o descárgalo como archivo .yaml.

Casos de uso comunes

  • Unificar estilo antes de publicar
  • Detectar problemas de estructura o sintaxis
  • Mostrar fragmentos limpios en documentación

✨ Características Clave

  • 🎯 Validación de Formato: Verifica errores de sintaxis YAML y proporciona sugerencias detalladas
  • 🎨 Embellimiento de Formato: Formatea automáticamente contenido YAML con indentación y formato
  • 🗜️ Compresión de Contenido: Elimina espacios y comentarios innecesarios para comprimir el tamaño del archivo
  • 📋 Copia con Un Clic: Los resultados de formato se pueden copiar directamente para usar
  • 🔧 Localización de Errores: Localiza con precisión la posición de errores de sintaxis
  • 💾 Descarga YAML: Guarda el resultado formateado como archivo .yaml

📖 Ejemplos de Uso

Ejemplo de Formato

YAML Original:

name:ToolMi
version:1.0.0
features:
- format
- validate
- compress
config:
  debug:true
  port:3000

Después del Formato:

name: ToolMi
version: 1.0.0
features:
  - format
  - validate
  - compress
config:
  debug: true
  port: 3000

Ejemplo de Estructura Compleja

YAML de Entrada:

database:
  host: localhost
  port: 5432
  credentials:
    username: admin
    password: secret
  pools:
    - name: read_pool
      size: 10
    - name: write_pool
      size: 5

Después de Validación y Embellimiento:

database:
  host: localhost
  port: 5432
  credentials:
    username: admin
    password: secret
  pools:
    - name: read_pool
      size: 10
    - name: write_pool
      size: 5

🎯 Escenarios de Aplicación

1. Formateo de archivos de configuración YAML (YML) de aplicaciones

Organizando y validando archivos de configuración de aplicaciones:

# Archivo de configuración de aplicación (config.yml)
app:
  name: ToolMi
  version: 1.0.0
  environment: production
  
server:
  host: 0.0.0.0
  port: 3000
  ssl:
    enabled: true
    cert_path: /etc/ssl/certs/app.crt
    key_path: /etc/ssl/private/app.key
    
database:
  type: postgresql
  host: localhost
  port: 5432
  name: toolmi_db
  username: ${DB_USER}
  password: ${DB_PASSWORD}
  pool:
    min_connections: 2
    max_connections: 10
    
redis:
  host: localhost
  port: 6379
  password: ${REDIS_PASSWORD}
  db: 0
  
logging:
  level: info
  format: json
  outputs:
    - type: file
      path: /var/log/app.log
    - type: console

2. Formateo de configuraciones YAML (YML) de Docker Compose

Gestionando configuración de orquestación de contenedores Docker:

# docker-compose.yml
version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DB_HOST=database
    depends_on:
      - database
      - redis
    volumes:
      - ./uploads:/app/uploads
    networks:
      - app-network
      
  database:
    image: postgres:13
    environment:
      POSTGRES_DB: toolmi_db
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - app-network
      
  redis:
    image: redis:6-alpine
    command: redis-server --requirepass ${REDIS_PASSWORD}
    volumes:
      - redis_data:/data
    networks:
      - app-network

volumes:
  postgres_data:
  redis_data:

networks:
  app-network:
    driver: bridge

3. Formateo YAML (YML) para pipelines CI/CD

Configuración de flujo de trabajo de GitHub Actions:

# .github/workflows/deploy.yml
name: Despliegue a Producción

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  NODE_VERSION: '18'
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout código
        uses: actions/checkout@v3
        
      - name: Configurar Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'npm'
          
      - name: Instalar dependencias
        run: npm ci
        
      - name: Ejecutar pruebas
        run: npm test
        
      - name: Ejecutar linting
        run: npm run lint
        
  build:
    needs: test
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout código
        uses: actions/checkout@v3
        
      - name: Construir imagen Docker
        run: |
          docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest .
          
      - name: Push a registro
        run: |
          echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
          docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

4. Formateo de manifiestos YAML (YML) de Kubernetes

Archivos de configuración de despliegue Kubernetes:

# deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: toolmi-app
  labels:
    app: toolmi
spec:
  replicas: 3
  selector:
    matchLabels:
      app: toolmi
  template:
    metadata:
      labels:
        app: toolmi
    spec:
      containers:
        - name: app
          image: toolmi/app:latest
          ports:
            - containerPort: 3000
          env:
            - name: NODE_ENV
              value: "production"
            - name: DB_HOST
              valueFrom:
                secretKeyRef:
                  name: app-secrets
                  key: db-host
          resources:
            requests:
              memory: "256Mi"
              cpu: "250m"
            limits:
              memory: "512Mi"
              cpu: "500m"
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 5

---
apiVersion: v1
kind: Service
metadata:
  name: toolmi-service
spec:
  selector:
    app: toolmi
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
  type: LoadBalancer

🔧 Detalles Técnicos

Reglas de Sintaxis YAML

Reglas básicas de sintaxis de YAML:

Reglas de Indentación:

  • Usar espacios para indentación, no se permiten tabs
  • Elementos al mismo nivel deben estar alineados a la izquierda
  • Elementos hijos deben estar más indentados que elementos padres

Tipos de Datos:

  • Cadenas: Pueden no tener comillas, caracteres especiales necesitan comillas
  • Números: Enteros y números de punto flotante
  • Booleanos: true/false, yes/no, on/off
  • Valores nulos: null, ~, o vacío

Tipos de Colección:

  • Arrays: Usar - para indicar elementos de lista
  • Objetos: Usar key: value para representar pares clave-valor
  • Anidamiento: Soporta niveles arbitrarios de estructuras anidadas

Errores Comunes

Errores comunes que el formateador YAML puede detectar:

Errores de Indentación:

# Ejemplo incorrecto
config:
  debug: true
 port: 3000  # Indentación inconsistente

# Ejemplo correcto
config:
  debug: true
  port: 3000

Problemas de Comillas:

# Ejemplo incorrecto
message: It's a test  # Comilla simple no escapada

# Ejemplo correcto
message: "It's a test"
# o
message: 'It''s a test'

Formato de Lista:

# Ejemplo incorrecto
features:
- format
 - validate  # Error de indentación

# Ejemplo correcto
features:
  - format
  - validate

💡 Consejos de Uso

  • Indentación Consistente: Siempre usar el mismo número de espacios para indentación (se recomiendan 2 espacios)
  • Uso de Comillas: Rodear cadenas que contienen caracteres especiales con comillas
  • Estándares de Comentarios: Usar # para agregar comentarios, agregar espacio antes de comentarios
  • Cadenas Multilínea: Usar | o > para manejar texto multilínea

⚠️ Notas Importantes

  • Prohibición de Tabs: YAML no permite tabs, solo se pueden usar espacios
  • Sensible a Indentación: Errores de indentación causarán fallos de análisis
  • Caracteres Especiales: Dos puntos, comillas y otros caracteres especiales necesitan manejo adecuado
  • Formato de Codificación: Asegurar que los archivos usen codificación UTF-8

🚀 Cómo Empezar

  1. Entrada YAML: Pegue el contenido YAML a procesar en el cuadro de entrada
  2. Elegir Operación: Haga clic en los botones "Formatear", "Validar" o "Comprimir"
  3. Ver Resultados: Verifique el YAML procesado en el cuadro de salida
  4. Copiar o Descargar: Copie el resultado o guárdelo como formatted.yaml
  5. Corregir Errores: Corrija problemas de sintaxis basados en sugerencias de error

Consejo: Esta herramienta procesa localmente en el lado del cliente y no sube contenido YAML al servidor, garantizando seguridad de datos.

❓ Preguntas frecuentes

P1: ¿Falló el formateo?
R: Revisa la sintaxis antes de formatear.

P2: ¿Puedo minificar?
R: Sí. Compactar YAML usa el estilo de flujo y elimina los comentarios.

P3: ¿Mantener comentarios?
R: El formato normal conserva los comentarios; solo el modo compacto los elimina.