TOML vs YAML: dezelfde config, drie formaten

TOML vs YAML

TOML vs YAML (en JSON): dezelfde config op drie manieren | We.Inc

Vergelijk TOML, YAML en JSON op dezelfde configbestanden, naast elkaar. Zie waar elk formaat verplicht is, van pyproject.toml en Cargo.toml tot compose.yaml.

TOML is een INI-achtig formaat gemaakt voor configbestanden: expliciete [table]-headers, strings tussen aanhalingstekens, echte datumtypes en geen betekenisvolle inspringing. YAML leunt op inspringing, raadt types uit kale waarden en voegt anchors en meerdere documenten toe. Voor vlakke instellingen is TOML moeilijker stuk te maken; voor diepe nesting leest YAML prettiger.

TOML, YAML en JSON in één oogopslag

Meestal hebt u geen keus: Python-packaging leest pyproject.toml, Rust leest Cargo.toml, en GitHub Actions en Docker Compose lezen YAML. Als u wel kiest, maakt één config in alle drie de formaten de afwegingen duidelijk. Kies hieronder een voorbeeld en vergelijk.

Veelgestelde vragen

Is TOML beter dan YAML?

Geen van beide wint overal. De expliciete headers en verplichte aanhalingstekens van TOML maken kleine en middelgrote configbestanden moeilijk verkeerd te lezen. YAML verwerkt diepe nesting en lange lijsten met minder ruis, ten koste van syntax die gevoelig is voor witruimte en impliciete typering.

Waarom gebruikt Python pyproject.toml?

De Python-packaginggidsen definiëren pyproject.toml met drie tabellen: [build-system] voor de build-backend, [project] voor metadata zoals naam, versie en dependencies, en [tool] voor instellingen van afzonderlijke tools zoals linters.

Kan TOML alles weergeven wat YAML kan?

Niet alles. TOML heeft geen anchors of aliassen, geen meerdere documenten per bestand en geen null, omdat elke sleutel een waarde moet krijgen. Voor configuratie maakt dat zelden uit, maar YAML-data die op die functies leunt, laat zich niet één op één omzetten.

Welke formaten accepteren Docker Compose en GitHub Actions?

Beide gebruiken YAML. GitHub Actions-workflows staan in .github/workflows met de extensie .yml of .yaml, en Compose zoekt standaard naar compose.yaml en accepteert voor oudere projecten nog docker-compose.yaml.

Ondersteunt TOML strings over meerdere regels?

Ja. Drie dubbele aanhalingstekens starten een basic string over meerdere regels die escapes toestaat, en drie enkele aanhalingstekens starten een literal string over meerdere regels die de inhoud precies houdt zoals geschreven.

Waar elk formaat verplicht is

Wat TOML opgeeft voor veiligheid

Welke bestanden welk formaat gebruiken

Veelgebruikte configbestanden en het formaat dat ze eisen

TOML-syntax die het kennen waard is

Dotted keys, inline tables en datums

Dotted keys en inline tables voorkomen extra headers voor kleine groepen, en datums zijn getypeerde waarden, geen strings.

Eén config in TOML, YAML en JSON

Kies een voorbeeld. Alle drie de versies bevatten precies dezelfde data, zodat u kunt vergelijken hoe elk formaat het uitschrijft.

Voorbeeldconfig

TOML

YAML

JSON

In het voorbeeld met app-instellingen slaat TOML opens op als echte lokale tijd, terwijl de YAML- en JSON-versie het als string bewaren.

App-instellingen

Package-manifest

Lijst servers

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap