RIFERIMENTO RAPIDO YAML
Scalari, sequenze, mapping, ancore, multi-riga
Sintassi
Regole di Base
| Indentation | Solo spazi (nessun tab), profondità consistente |
| # | Commento (fino a fine riga) |
| --- | Marcatore di inizio documento |
| ... | Marcatore di fine documento |
| Case sensitive | Chiavi e valori distinguono le maiuscole |
Esempio Minimale
---
name: Alice
age: 30
active: true
Scalari
Tipi Scalari
| hello | Stringa (senza virgolette) |
| "hello" | Stringa (doppi apici, permette escape) |
| 'hello' | Stringa (apice singolo, letterale) |
| 42 / 3.14 | Numero (intero / virgola mobile) |
| true / false | Booleano |
| null / ~ | Valore null |
| 2026-03-26 | Data (ISO 8601) |
Regole di Virgolettatura
plain: nessuna virgoletta necessaria
special: "il colon: e il cancelletto # richiedono virgolette"
escape: "line\nnewline"
literal: 'nessun escape \n qui'
Sequenze
Sequenza a Blocchi
fruits:
- apple
- banana
- cherry
Sequenza Flow (Inline)
colors: [red, green, blue]
matrix: [[1, 2], [3, 4]]
Sequenza di Oggetti
users:
- name: Alice
role: admin
- name: Bob
role: user
Mapping
Mapping a Blocchi
server:
host: localhost
port: 8080
debug: false
Mapping Flow (Inline)
point: {x: 10, y: 20}
Chiavi Complesse
? [first, second]
: "valore chiave composta"
Ancore e Alias
Definizione e Riutilizzo
defaults: &defaults
timeout: 30
retries: 3
production:
<<: *defaults
timeout: 60
Riferimento
| &name | Definisce un'ancora |
| *name | Riferimento (alias) a un'ancora |
| << | Chiave merge — fonde il mapping nel corrente |
Stringhe Multi-riga
Scalari a Blocchi
| | (letterale) | Preserva i newline esattamente |
| > (ripiegato) | Ripiega i newline in spazi |
| |+ (conserva) | Letterale, conserva newline finali |
| |- (elimina) | Letterale, elimina newline finali |
| >- (piega+elimina) | Ripiegato, elimina newline finali |
Blocco Letterale
script: |
echo "line one"
echo "line two"
Blocco Ripiegato
description: >
Questo lungo testo verrà
ripiegato in una singola riga
con spazi.
Tag
Tag di Tipo
| !!str 42 | Forza il valore a stringa "42" |
| !!int "42" | Forza il valore a intero 42 |
| !!float 1 | Forza il valore a float 1.0 |
| !!bool "true" | Forza il valore a booleano |
| !!null "" | Forza il valore a null |
| !!binary | Dati binari codificati in base64 |
Esempio di Tag
port: !!str 8080
enabled: !!bool "yes"
version: !!float 3
Pattern Comuni
Docker Compose
services:
web:
image: nginx:alpine
ports: ["80:80"]
environment:
NODE_ENV: production
GitHub Actions
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Suggerimenti
| yamllint | Linta YAML per sintassi e stile |
| yq | Processore YAML da riga di comando (come jq) |
| Avoid Norway | NO è booleano false — metti tra virgolette i codici paese |
| Avoid !!python | Non caricare mai YAML non attendibile con loader non sicuri |