Skip to content

YAMLYAML

Formatter YAML

Riordina uno YAML disordinato — e conserva ogni commento.

YAML

Incolla YAML qui o trascina un file sulla pagina

YAML

YAML appare qui mentre scrivi

Gratis e illimitato · Nessuna registrazione · Indentazione, spaziatura e virgolette normalizzate — ogni commento che hai scritto viene mantenuto.

Cosa viene normalizzato

  • Indentazione: ogni livello viene riscritto a due o quattro spazi, qualunque fosse il mix in ingresso, e una sequenza annidata sotto una chiave viene indentata sotto quella chiave.
  • Spaziatura: uno spazio dopo i due punti e dopo il trattino di elenco, uno spazio prima di un commento in linea, e le serie di righe vuote ridotte a una sola.
  • Fine riga e spazi finali: i fine riga di Windows diventano LF e gli spazi a fine riga vengono rimossi.
  • Collezioni in stile flow: [80, 443] diventa [ 80, 443 ]; restano in linea invece di essere espanse in stile block.
  • Numeri senza virgolette in YAML 1.2: stampati in forma canonica, quindi 022 diventa 22, +1 diventa 1 e 1e3 diventa 1e+3. In modalità YAML 1.1 gli ottali con zero iniziale come 0644 vengono conservati.
  • Scalari folded (>): riadattati a una riga per paragrafo, conservando le interruzioni di paragrafo.
  • Ordine delle chiavi: solo se attivi Ordina chiavi; altrimenti le chiavi restano dove le hai messe.

Cosa resta esattamente com’è

  • Ogni commento: su una riga propria, dopo un valore o come blocco tra sezioni.
  • Le virgolette: gli apici singoli restano singoli, i doppi restano doppi, i valori senza virgolette restano senza.
  • Ancore, alias e chiavi di merge: &defaults, *defaults e <<: vengono conservati, non espansi.
  • Scalari literal (|): riga per riga, compresi gli a capo finali.
  • L’ordine delle sequenze, sempre, e quello delle chiavi a meno che tu non ordini.
  • I separatori di documento (---) e le direttive %YAML nei file multi-documento.
  • Le righe lunghe: nulla viene mandato a capo, quindi un URL o un comando lungo resta su una sola riga.
  • I valori vuoti, ~, null e i booleani come li hai scritti: True resta True.

Perché la maggior parte dei formatter cancella i tuoi commenti

Quasi tutti gli strumenti YAML online funzionano allo stesso modo: analizzano il documento in dati semplici e poi ristampano quei dati. I commenti non sono dati, quindi non sopravvivono mai al viaggio. I file di configurazione sono spesso più commenti che configurazione, e perderli significa perdere il ragionamento dietro i valori.

Questa pagina usa un parser diverso dal resto del sito — uno che mantiene un albero sintattico concreto, così ogni commento resta attaccato alla riga che documenta. È anche per questo che il formatter è un po’ più rigido sulla sintassi: deve capire la forma del documento con precisione sufficiente a ricostruirlo fedelmente.

Commenti e struttura sopravvivono entrambi

L’indentazione viene normalizzata alla larghezza scelta; i commenti restano dove li hai messi.

Prima

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

Dopo

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

Altri esempi prima e dopo

Ogni esempio di questa pagina viene riformattato esattamente così nello strumento qui sopra, con l’indentazione predefinita di due spazi.

Ancore, alias e scalari a blocco restano com’erano

Un frammento di Docker Compose con indentazione a quattro spazi. L’ancora, la chiave di merge e il blocco literal sono intatti; cambia solo l’indentazione.

Prima

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

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

Dopo

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

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

Chiavi ordinate per diff leggibili

Lo stesso file con Ordina chiavi attivo. Le chiavi sono ordinate a ogni livello, la sequenza mantiene il suo ordine e il commento si sposta con la chiave che descrive.

Prima

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

Dopo

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

Formatter, validatore o convertitore?

Tutti e tre usano lo stesso motore nel tuo browser. Quale scegliere dipende da dove andrà il file.

Usa il formatter quando il file resta YAML

Un file Compose, un values di Helm o una pipeline CI modificata da più persone. Vuoi un’indentazione coerente e vuoi conservare i commenti che spiegano i valori. È l’unica cosa che un giro attraverso un convertitore non può darti.

Usa il validatore quando qualcosa si rifiuta di essere analizzato

Il validatore YAML è lo stesso motore con il pannello di output dedicato alla diagnostica: ogni errore porta riga, colonna, causa in linguaggio chiaro e correzione, e ogni valore che YAML 1.1 e 1.2 leggono in modo diverso viene segnalato.

Usa il convertitore quando il file va dove si parla JSON

Corpi di richieste API, fixture di test, una pipeline jq. Il convertitore da YAML a JSON elimina i commenti — JSON non ha una sintassi per loro — e ti dice quanti ne ha eliminati, espande le ancore e può emettere un flusso multi-documento come array o come JSON Lines.

Domande frequenti

Questo formatter YAML conserva i commenti?

Sì. Il formatter analizza il documento con un parser che conserva un albero sintattico concreto, quindi i commenti su una riga propria, quelli dopo un valore e i blocchi di commenti tra sezioni escono dove erano entrati. Se attivi l’ordinamento delle chiavi, ogni commento resta legato alla chiave sopra cui si trova. La maggior parte dei formatter online trasforma lo YAML in dati semplici e li ristampa, ed è per questo che perde tutti i commenti; il convertitore JSON di questo sito fa lo stesso, inevitabilmente, e ti dice quanti ne ha eliminati.

La formattazione cambia i miei dati?

Struttura e testo non vengono toccati: le virgolette restano esattamente come le hai scritte, ancore, alias e chiavi di merge restano al loro posto, gli scalari a blocco mantengono il contenuto e l’ordine delle chiavi resta invariato a meno che tu non chieda di ordinarle. Due cose vengono normalizzate. I numeri senza virgolette sono stampati in forma canonica con YAML 1.2, quindi 022 diventa 22, +1 diventa 1 e 1e3 diventa 1e+3; passa la versione a 1.1 e gli ottali con zero iniziale come 0644 vengono conservati. Gli scalari folded (>) vengono riadattati conservando le interruzioni di paragrafo. Se un valore deve mantenere la sua scrittura esatta, mettilo tra virgolette: gli avvisi sotto l’output elencano ogni valore senza virgolette che YAML 1.1 e 1.2 leggono in modo diverso.

Quale indentazione usa il formatter?

Due spazi per impostazione predefinita, o quattro se li scegli. Ogni livello del documento riceve la stessa larghezza indipendentemente da come era indentato l’ingresso, e una sequenza annidata sotto una chiave viene indentata sotto quella chiave. YAML vieta le tabulazioni per l’indentazione, quindi non c’è un’opzione tabulazione, e un documento indentato con tabulazioni viene segnalato come errore con il numero di riga invece di essere riformattato.

Può ordinare le chiavi?

Sì. L’opzione Ordina chiavi ordina alfabeticamente le chiavi di ogni mapping, a ogni livello di annidamento, il che rende più facili i diff e la revisione del codice per i file modificati da più persone o strumenti. Le sequenze mantengono il loro ordine, perché in un elenco l’ordine ha un significato. I commenti si spostano con la chiave a cui appartengono. L’ordinamento è disattivato per impostazione predefinita: l’ordine delle chiavi non significa nulla in YAML, ma spesso significa molto per chi legge il file.

Gestisce YAML multi-documento?

Sì. Un file con più documenti separati da --- viene riformattato documento per documento e i separatori vengono conservati, quindi un manifest Kubernetes con un Deployment, un Service e un Ingress resta un solo file. Anche un --- iniziale e una direttiva %YAML vengono conservati, e la riga di stato indica quanti documenti sono stati riformattati.

Perché il formatter rifiuta YAML che il convertitore accetta?

Il formatter usa un parser più severo del convertitore, perché deve capire la forma esatta del documento per ricostruirlo con i commenti al loro posto. Un documento che il convertitore analizza ma che qui fallisce viene segnalato con la riga, una spiegazione in linguaggio chiaro e una correzione suggerita, come nel validatore YAML. La guida agli errori YAML comuni passa in rassegna i sei errori dietro quasi ogni parsing fallito.

È la stessa cosa di yamllint o Prettier?

No, e si completano bene. yamllint segnala problemi di stile e sintassi ma non riscrive il file; questo formatter riscrive indentazione e spaziatura ma non impone regole come la lunghezza delle righe. L’output YAML di Prettier è vicino a quello che ottieni qui, e se il tuo progetto lo esegue già non hai bisogno di questa pagina: esiste per il file che hai negli appunti in questo momento, senza installare nulla e senza caricare nulla.

Il mio YAML viene caricato quando lo formatto?

No. Il formatter è JavaScript che gira nella scheda del tuo browser. La libreria yaml viene caricata con la pagina e non esiste alcun endpoint a cui inviare un documento; puoi caricare la pagina, disconnetterti da internet e continuare a formattare. Conta per i file che di solito si vogliono sistemare: manifest Kubernetes, file Docker Compose e pipeline CI contengono nomi host, registry e ogni tanto un segreto.

Come formatto YAML dalla riga di comando?

yq -i . config.yaml riformatta un file sul posto e conserva i commenti; togli -i per stampare invece il risultato. Con Prettier installato, npx prettier --write "**/*.{yml,yaml}" formatta tutti i file YAML di un progetto. In Python, ruamel.yaml in modalità round-trip riformatta conservando i commenti, cosa che PyYAML non può fare. Per un file singolo, incollalo nel formatter qui sopra.