TOML vs YAML : une config, trois formats

TOML vs YAML

TOML vs YAML (et JSON) : la même config de trois façons | We.Inc

Comparez TOML, YAML et JSON sur les mêmes fichiers de configuration, côte à côte. Voyez où chaque format est imposé, de pyproject.toml et Cargo.toml à compose.yaml.

TOML est un format proche de INI conçu pour les fichiers de configuration : en-têtes [table] explicites, chaînes entre guillemets, vrais types de date et aucune indentation significative. YAML repose sur l'indentation, devine les types à partir des valeurs nues et ajoute les ancres et les documents multiples. Pour des réglages peu imbriqués, TOML est plus difficile à casser ; pour une imbrication profonde, YAML se lit mieux.

TOML, YAML et JSON en un coup d'œil

La plupart du temps, vous n'avez pas le choix : le packaging Python lit pyproject.toml, Rust lit Cargo.toml, et GitHub Actions comme Docker Compose lisent du YAML. Quand vous avez le choix, voir une même config dans les trois formats rend les compromis évidents. Choisissez un exemple ci-dessous et comparez.

Questions fréquentes

TOML est-il meilleur que YAML ?

Aucun ne gagne partout. Les en-têtes explicites et les guillemets obligatoires de TOML rendent les petits et moyens fichiers de configuration difficiles à mal lire. YAML gère l'imbrication profonde et les longues listes avec moins de bruit, au prix d'une syntaxe sensible aux espaces et d'un typage implicite.

Pourquoi Python utilise-t-il pyproject.toml ?

Les guides de packaging Python définissent pyproject.toml avec trois tables : [build-system] pour le backend de build, [project] pour les métadonnées comme le nom, la version et les dépendances, et [tool] pour les réglages d'outils individuels comme les linters.

TOML peut-il représenter tout ce que YAML représente ?

Pas tout. TOML n'a ni ancres ni alias, ni documents multiples par fichier, ni null, puisque chaque clé doit recevoir une valeur. Pour de la configuration, cela compte rarement, mais des données YAML qui s'appuient sur ces fonctionnalités ne se convertiront pas à l'identique.

Quels formats acceptent Docker Compose et GitHub Actions ?

Les deux utilisent YAML. Les workflows GitHub Actions se trouvent dans .github/workflows avec une extension .yml ou .yaml, et Compose cherche compose.yaml par défaut, tout en acceptant encore docker-compose.yaml pour les projets plus anciens.

TOML prend-il en charge les chaînes multilignes ?

Oui. Trois guillemets doubles ouvrent une chaîne basique multiligne qui accepte les échappements, et trois guillemets simples ouvrent une chaîne littérale multiligne qui conserve son contenu exactement tel qu'il est écrit.

Où chaque format est imposé

Ce que TOML sacrifie pour la sûreté

Quels fichiers utilisent quel format

Fichiers de configuration courants et le format qu'ils imposent

La syntaxe TOML à connaître

Clés pointées, tables inline et dates

Les clés pointées et les tables inline évitent des en-têtes supplémentaires pour les petits groupes, et les dates sont des valeurs typées, pas des chaînes.

Une config en TOML, YAML et JSON

Choisissez un exemple. Les trois versions contiennent exactement les mêmes données, pour comparer la façon dont chaque format les écrit.

Config d'exemple

TOML

YAML

JSON

Dans l'exemple de réglages d'app, TOML stocke opens comme une vraie heure locale, alors que les versions YAML et JSON la gardent sous forme de chaîne.

Réglages d'app

Manifeste de paquet

Liste de serveurs

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site