Skip to content

YAMLYAML

Formatador YAML

Arrume YAML desorganizado — e mantenha todos os comentários.

YAML

Cole seu YAML aqui ou solte um arquivo na pagina

YAML

YAML aparece aqui enquanto voce digita

Grátis e ilimitado · Sem registo · Indentação, espaçamento e aspas normalizados — cada comentário que escreveu é mantido.

O que é normalizado

  • Indentação: cada nível é reescrito com dois ou quatro espaços, seja qual for a mistura da entrada, e uma sequência aninhada sob uma chave é indentada abaixo dessa chave.
  • Espaçamento: um espaço depois dos dois-pontos e do hífen de lista, um espaço antes de um comentário em linha, e sequências de linhas em branco reduzidas a uma só.
  • Fins de linha e espaços finais: fins de linha do Windows viram LF e os espaços no fim de cada linha são removidos.
  • Coleções em estilo flow: [80, 443] vira [ 80, 443 ]; continuam numa linha em vez de serem expandidas para o estilo block.
  • Números sem aspas no YAML 1.2: impressos na forma canônica, então 022 vira 22, +1 vira 1 e 1e3 vira 1e+3. No modo YAML 1.1, octais com zero inicial como 0644 são mantidos.
  • Escalares dobrados (>): reorganizados numa linha por parágrafo, mantendo as quebras de parágrafo.
  • Ordem das chaves: só se você ativar Ordenar chaves; caso contrário as chaves ficam onde você as colocou.

O que fica exatamente como você escreveu

  • Todos os comentários: em linha própria, depois de um valor ou como bloco entre seções.
  • As aspas: simples continuam simples, duplas continuam duplas, valores sem aspas continuam sem aspas.
  • Âncoras, aliases e chaves de merge: &defaults, *defaults e <<: são mantidos, não expandidos.
  • Escalares literais (|): linha por linha, incluindo as quebras de linha finais.
  • A ordem das sequências, sempre, e a das chaves a menos que você ordene.
  • Os separadores de documento (---) e as diretivas %YAML em arquivos multi-documento.
  • As linhas longas: nada é quebrado, então uma URL ou um comando longo continua numa só linha.
  • Valores vazios, ~, null e os booleanos como você os escreveu: True continua True.

Porque é que a maioria dos formatadores apaga os seus comentários

Quase todas as ferramentas YAML online funcionam da mesma forma: analisam o documento para dados simples e depois imprimem esses dados de volta. Os comentários não são dados, por isso nunca sobrevivem à viagem. Os ficheiros de configuração são muitas vezes mais comentário do que configuração, e perdê-los é perder o raciocínio por trás dos valores.

Esta página usa um parser diferente do resto do site — um que mantém uma árvore de sintaxe concreta, para que cada comentário fique ligado à linha que documenta. É também por isso que o formatador é um pouco mais rigoroso com a sintaxe: tem de perceber a forma do documento com precisão suficiente para o reconstruir fielmente.

Comentários e estrutura sobrevivem ambos

A indentação é normalizada para a largura escolhida; os comentários ficam onde os pôs.

Antes

# Production cluster
server:
      host:   0.0.0.0
      port: 8080   # internal only
features:
    - fast
    -    private

Depois

# Production cluster
server:
  host: 0.0.0.0
  port: 8080 # internal only
features:
  - fast
  - private

Mais exemplos de antes e depois

Cada exemplo desta página é formatado exatamente assim na ferramenta acima, com a indentação padrão de dois espaços.

Âncoras, aliases e escalares de bloco ficam como estavam

Um trecho de Docker Compose com indentação de quatro espaços. A âncora, a chave de merge e o bloco literal ficam intactos; só a indentação muda.

Antes

x-defaults: &defaults
    restart: always
    logging: json

services:
    web:
        <<: *defaults
        image: nginx
        command: |
            sh -c "echo starting"
            exec nginx

Depois

x-defaults: &defaults
  restart: always
  logging: json

services:
  web:
    <<: *defaults
    image: nginx
    command: |
      sh -c "echo starting"
      exec nginx

Chaves ordenadas para diffs fáceis de revisar

O mesmo arquivo com Ordenar chaves ativado. As chaves são ordenadas em cada nível, a sequência mantém a ordem e o comentário se move com a chave que descreve.

Antes

replicas: 3
name: api
# Ports the service exposes
ports:
  - 443
  - 80
image: api:1.2

Depois

image: api:1.2
name: api
# Ports the service exposes
ports:
  - 443
  - 80
replicas: 3

Formatador, validador ou conversor?

Os três usam o mesmo motor no seu navegador. Qual escolher depende de para onde o arquivo vai a seguir.

Use o formatador quando o arquivo continua sendo YAML

Um arquivo Compose, um values do Helm ou um pipeline de CI que várias pessoas editaram. Você quer indentação consistente e quer manter os comentários que explicam os valores. É a única coisa que uma ida e volta por um conversor não pode dar.

Use o validador quando algo se recusa a ser analisado

O validador YAML é o mesmo motor com o painel de saída focado no diagnóstico: cada erro traz linha, coluna, causa em linguagem clara e correção, e cada valor que o YAML 1.1 e o 1.2 leem de forma diferente é marcado.

Use o conversor quando o arquivo vai para onde se fala JSON

Corpos de requisições de API, fixtures de teste, um pipeline com jq. O conversor de YAML para JSON descarta os comentários — JSON não tem sintaxe para eles — e diz quantos descartou, expande as âncoras e pode emitir um fluxo multi-documento como array ou como JSON Lines.

Perguntas frequentes

Este formatador de YAML mantém os comentários?

Sim. O formatador analisa o documento com um parser que mantém uma árvore de sintaxe concreta, então comentários em linha própria, comentários depois de um valor e blocos de comentários entre seções saem onde entraram. Se você ativar a ordenação de chaves, cada comentário continua preso à chave sobre a qual está. A maioria dos formatadores online transforma o YAML em dados simples e os imprime de volta, e por isso perde todos os comentários; o conversor para JSON deste site faz o mesmo, inevitavelmente, e diz quantos foram descartados.

Formatar altera os meus dados?

Estrutura e texto não são tocados: as aspas ficam exatamente como você escreveu, âncoras, aliases e chaves de merge ficam no lugar, escalares de bloco mantêm o conteúdo e a ordem das chaves é mantida a menos que você peça para ordenar. Duas coisas são normalizadas. Números sem aspas são impressos na forma canônica com YAML 1.2, então 022 vira 22, +1 vira 1 e 1e3 vira 1e+3; mude a versão para 1.1 e octais com zero inicial como 0644 são mantidos. Escalares dobrados (>) são reorganizados mantendo as quebras de parágrafo. Se um valor precisa manter a grafia exata, coloque-o entre aspas: os avisos abaixo da saída listam cada valor sem aspas que o YAML 1.1 e o 1.2 leem de forma diferente.

Que indentação o formatador usa?

Dois espaços por padrão, ou quatro se você escolher. Cada nível do documento recebe a mesma largura independentemente de como a entrada estava indentada, e uma sequência aninhada sob uma chave é indentada abaixo dessa chave. O YAML proíbe tabulações como indentação, então não há opção de tabulação, e um documento indentado com tabulações é reportado como erro com o número da linha em vez de ser formatado.

Ele pode ordenar as chaves?

Sim. A opção Ordenar chaves ordena alfabeticamente as chaves de cada mapeamento, em todos os níveis de aninhamento, o que facilita diffs e revisão de código em arquivos editados por várias pessoas ou ferramentas. As sequências mantêm a ordem, porque numa lista a ordem tem significado. Os comentários se movem com a chave a que pertencem. A ordenação vem desligada por padrão: a ordem das chaves não significa nada no YAML, mas muitas vezes significa muito para quem lê o arquivo.

Ele lida com YAML multi-documento?

Sim. Um arquivo com vários documentos separados por --- é formatado documento a documento e os separadores são mantidos, então um manifesto Kubernetes com um Deployment, um Service e um Ingress continua sendo um só arquivo. Um --- inicial e uma diretiva %YAML também são mantidos, e a linha de status informa quantos documentos foram formatados.

Por que o formatador rejeita YAML que o conversor aceita?

O formatador usa um parser mais rigoroso que o conversor, porque precisa entender a forma exata do documento para reconstruí-lo com os comentários no lugar. Um documento que o conversor analisa mas que falha aqui é reportado com a linha, uma explicação em linguagem clara e uma correção sugerida, como no validador YAML. O guia de erros comuns de YAML percorre os seis erros por trás de quase toda análise que falha.

É a mesma coisa que yamllint ou Prettier?

Não, e eles se complementam bem. O yamllint reporta problemas de estilo e sintaxe mas não reescreve o arquivo; este formatador reescreve indentação e espaçamento mas não impõe regras como comprimento de linha. A saída YAML do Prettier é parecida com a que você obtém aqui, e se o seu projeto já o executa você não precisa desta página: ela existe para o arquivo que está na sua área de transferência agora, sem instalar nada e sem enviar nada.

O meu YAML é enviado para algum servidor ao formatar?

Não. O formatador é JavaScript que roda na aba do seu navegador. A biblioteca yaml é carregada com a página e não existe nenhum endpoint para onde enviar um documento; você pode carregar a página, desconectar da internet e continuar formatando. Isso importa para os arquivos que as pessoas geralmente querem arrumar: manifestos Kubernetes, arquivos Docker Compose e pipelines de CI carregam nomes de host, registries e, de vez em quando, um segredo.

Como formato YAML na linha de comando?

yq -i . config.yaml reformata um arquivo no lugar e mantém os comentários; retire o -i para imprimir o resultado. Com o Prettier instalado, npx prettier --write "**/*.{yml,yaml}" formata todos os arquivos YAML de um projeto. Em Python, o ruamel.yaml em modo round-trip reformata mantendo os comentários, o que o PyYAML não consegue fazer. Para um único arquivo, cole-o no formatador acima.