Formatador e validador YAML (YML)

Formate, valide, compacte e baixe YAML preservando comentários e localizando erros com precisão.

A formatação preserva comentários. A saída compacta remove comentários e usa o estilo de fluxo.

O que é o formatador YAML/YML?

YAML (YAML Ain't Markup Language) é um formato legível usado em configurações de aplicativos, CI/CD, Docker Compose e definições de API. Esta ferramenta formata, valida e compacta YAML ou YML no navegador sem enviar o conteúdo.

✨ Características Principais

  • 🎯 Validação de Formato: Verifica erros de sintaxe YAML e fornece dicas detalhadas
  • 🎨 Embelezamento de Formato: Formata automaticamente o conteúdo YAML com indentação e formato
  • 🗜️ Compressão de Conteúdo: Remove espaços extras e comentários para reduzir o tamanho do arquivo
  • 📋 Cópia com Um Clique: Resultados formatados podem ser copiados diretamente para uso
  • 🔧 Localização de Erros: Localiza com precisão a posição de erros de sintaxe
  • 💾 Download YAML: Salva o resultado formatado como arquivo .yaml

Como usar

  1. Cole YAML ou YML no editor.
  2. Escolha indentação de dois ou quatro espaços e a largura da linha.
  3. Selecione Formatar YAML, Compactar YAML ou Validar.
  4. Copie o resultado ou baixe como arquivo .yaml.

Casos de uso comuns

  • Padronizar estilo antes de publicar
  • Identificar problemas de estrutura ou sintaxe
  • Mostrar trechos limpos na documentação

📖 Exemplos de Uso

Exemplo de Formatação

YAML Original:

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

Após Formatação:

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

Exemplo de Estrutura Complexa

YAML de Entrada:

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

Após Validação e Embelezamento:

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

🎯 Cenários de Aplicação

1. Formatação de arquivos de configuração YAML (YML) de aplicações

Organizando e validando arquivos de configuração de aplicação:

# Arquivo de configuração de aplicação (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. Formatação de configurações YAML (YML) do Docker Compose

Gerenciando configuração de orquestração de contêineres 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. Formatação YAML (YML) para pipelines CI/CD

Configuração de fluxo de trabalho do GitHub Actions:

# .github/workflows/deploy.yml
name: Implantação para Produção

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 do 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 dependências
        run: npm ci
        
      - name: Executar testes
        run: npm test
        
      - name: Executar linting
        run: npm run lint
        
  build:
    needs: test
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout do código
        uses: actions/checkout@v3
        
      - name: Construir imagem Docker
        run: |
          docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest .
          
      - name: Push para registro
        run: |
          echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
          docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

4. Formatação de manifests Kubernetes em YAML (YML)

Arquivos de configuração de implantação 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

🔧 Detalhes Técnicos

Regras de Sintaxe YAML

Regras básicas de sintaxe YAML:

Regras de Indentação:

  • Use espaços para indentação, tabulações não são permitidas
  • Elementos no mesmo nível devem ser alinhados à esquerda
  • Elementos filhos devem ser mais indentados que elementos pais

Tipos de Dados:

  • Strings: Podem não ter aspas, caracteres especiais precisam de aspas
  • Números: Inteiros e números de ponto flutuante
  • Booleanos: true/false, yes/no, on/off
  • Valores nulos: null, ~, ou vazio

Tipos de Coleção:

  • Arrays: Use - para indicar itens de lista
  • Objetos: Use key: value para representar pares chave-valor
  • Aninhamento: Suporta níveis arbitrários de estruturas aninhadas

Erros Comuns

Erros comuns que o formatador YAML pode detectar:

Erros de Indentação:

# Exemplo errado
config:
  debug: true
 port: 3000  # Indentação inconsistente

# Exemplo correto
config:
  debug: true
  port: 3000

Problemas de Aspas:

# Exemplo errado
message: It's a test  # Aspa simples não escapada

# Exemplo correto
message: "It's a test"
# ou
message: 'It''s a test'

Formato de Lista:

# Exemplo errado
features:
- format
 - validate  # Erro de indentação

# Exemplo correto
features:
  - format
  - validate

💡 Dicas de Uso

  • Indentação Consistente: Sempre use o mesmo número de espaços para indentação (2 espaços recomendados)
  • Uso de Aspas: Cerque strings contendo caracteres especiais com aspas
  • Padrões de Comentários: Use # para adicionar comentários, adicione espaço antes dos comentários
  • Strings Multilinha: Use | ou > para manipular texto multilinha

⚠️ Notas Importantes

  • Proibição de Tabulações: YAML não permite tabulações, apenas espaços podem ser usados
  • Sensibilidade à Indentação: Erros de indentação causarão falhas de análise
  • Caracteres Especiais: Dois pontos, aspas e outros caracteres especiais precisam de manipulação adequada
  • Formato de Codificação: Certifique-se de que os arquivos usam codificação UTF-8

🚀 Como Começar

  1. Entrada YAML: Cole o conteúdo YAML a ser processado na caixa de entrada
  2. Escolher Operação: Clique nos botões "Formatar", "Validar" ou "Comprimir"
  3. Ver Resultados: Verifique o YAML processado na caixa de saída
  4. Copiar ou Baixar: Copie o resultado ou salve como formatted.yaml
  5. Corrigir Erros: Corrija problemas de sintaxe baseados em dicas de erro

Dica: Esta ferramenta processa localmente no lado do cliente e não envia conteúdo YAML para o servidor, garantindo privacidade e segurança dos seus arquivos de configuração.

❓ Perguntas frequentes

P1: Por que o resultado está incorreto?
R: Verifique o formato de entrada e as opções, e teste o exemplo se houver.

P2: E se a entrada for muito grande?
R: Divida os dados em partes menores para obter resultados mais estáveis.

P3: Como salvo a saída?
R: Clique no botão de download para salvar diretamente formatted.yaml.