TOML vs YAML: la stessa config in tre formati

TOML vs YAML

TOML vs YAML (e JSON): la stessa config in tre modi | We.Inc

Confronta TOML, YAML e JSON sugli stessi file di configurazione, affiancati. Scopri dove è richiesto ciascun formato, da pyproject.toml e Cargo.toml fino a compose.yaml.

TOML è un formato simile a INI pensato per i file di configurazione: intestazioni [table] esplicite, stringhe tra virgolette, veri tipi data e nessuna indentazione significativa. YAML si basa sull'indentazione, deduce i tipi dai valori senza virgolette e aggiunge anchor e documenti multipli. Per impostazioni poco annidate TOML è più difficile da rompere; per annidamenti profondi YAML si legge meglio.

TOML, YAML e JSON in sintesi

Il più delle volte non sei tu a scegliere: il packaging Python legge pyproject.toml, Rust legge Cargo.toml, e GitHub Actions e Docker Compose leggono YAML. Quando invece puoi scegliere, vedere una stessa config in tutti e tre i formati rende evidenti i compromessi. Scegli un esempio qui sotto e confronta.

Domande frequenti

TOML è meglio di YAML?

Nessuno dei due vince ovunque. Le intestazioni esplicite e le virgolette obbligatorie di TOML rendono difficile fraintendere file di configurazione piccoli e medi. YAML gestisce annidamenti profondi ed elenchi lunghi con meno rumore, al prezzo di una sintassi sensibile agli spazi e di una tipizzazione implicita.

Perché Python usa pyproject.toml?

Le guide al packaging di Python definiscono pyproject.toml con tre tabelle: [build-system] per il backend di build, [project] per i metadati come nome, versione e dipendenze, e [tool] per le impostazioni dei singoli strumenti come i linter.

TOML può rappresentare tutto ciò che rappresenta YAML?

Non tutto. TOML non ha anchor né alias, né documenti multipli per file, né null, dato che ogni chiave deve avere un valore. Per la configurazione conta raramente, ma i dati YAML che si basano su queste funzionalità non si convertono uno a uno.

Quali formati accettano Docker Compose e GitHub Actions?

Entrambi usano YAML. I workflow di GitHub Actions stanno in .github/workflows con estensione .yml o .yaml, e Compose cerca compose.yaml per default, accettando ancora docker-compose.yaml per i progetti più vecchi.

TOML supporta le stringhe su più righe?

Sì. Tre virgolette doppie aprono una stringa base su più righe che ammette i caratteri di escape, e tre virgolette singole aprono una stringa letterale su più righe che mantiene il contenuto esattamente come è scritto.

Dove è richiesto ciascun formato

A cosa rinuncia TOML in cambio della sicurezza

Quali file usano quale formato

File di configurazione comuni e il formato che richiedono

Sintassi TOML da conoscere

Chiavi puntate, tabelle inline e date

Chiavi puntate e tabelle inline evitano intestazioni extra per piccoli gruppi, e le date sono valori tipizzati, non stringhe.

Una config in TOML, YAML e JSON

Scegli un esempio. Tutte e tre le versioni contengono esattamente gli stessi dati, così puoi confrontare come li scrive ciascun formato.

Config di esempio

TOML

YAML

JSON

Nell'esempio delle impostazioni dell'app, TOML salva opens come un vero orario locale, mentre le versioni YAML e JSON lo mantengono come stringa.

Impostazioni dell'app

Manifest di pacchetto

Elenco di server

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito