YAMLYAML
Formatador YAML
Arrume YAML desorganizado — e mantenha todos os comentários.
Cole seu YAML aqui ou solte um arquivo na pagina
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
022vira22,+1vira1e1e3vira1e+3. No modo YAML 1.1, octais com zero inicial como0644sã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,*defaultse<<: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%YAMLem arquivos multi-documento. - As linhas longas: nada é quebrado, então uma URL ou um comando longo continua numa só linha.
- Valores vazios,
~,nulle os booleanos como você os escreveu:TruecontinuaTrue.
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
- privateDepois
# Production cluster
server:
host: 0.0.0.0
port: 8080 # internal only
features:
- fast
- privateMais 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 nginxDepois
x-defaults: &defaults
restart: always
logging: json
services:
web:
<<: *defaults
image: nginx
command: |
sh -c "echo starting"
exec nginxChaves 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.2Depois
image: api:1.2
name: api
# Ports the service exposes
ports:
- 443
- 80
replicas: 3Formatador, 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.