Dans cet article
Qu'est-ce que TOML ?
TOML (Tom's Obvious, Minimal Language) est un format de fichier de configuration concu pour etre facile a lire et ecrire. Cree par Tom Preston-Werner (cofondateur de GitHub), TOML correspond clairement a une table de hachage et est concu pour etre sans ambiguite.
TOML est le format de configuration de choix pour Rust (Cargo.toml), Python (pyproject.toml) et de nombreux generateurs de sites statiques. Il prend en charge les commentaires, les litteraux date-heure et les tables imbriquees tout en restant plus simple que YAML.
Regles de syntaxe TOML
La syntaxe TOML est concue pour etre minimale et sans ambiguite. Voici les elements fondamentaux du langage.
- Paires cle/valeur — l'element de base, ecrit comme cle = valeur sur chaque ligne. Les cles peuvent etre nues, entre guillemets ou avec des points pour l'acces imbrique.
- Tables — sections definies avec des en-tetes [nom_table] qui regroupent les paires cle/valeur associees. Les tables peuvent etre imbriquees avec des cles pointees ou la syntaxe [[tableau_de_tables]].
- Tableaux — listes ordonnees definies avec des crochets [1, 2, 3]. Tous les elements doivent etre du meme type. Les tableaux multiligne sont autorises avec des virgules finales.
- Litteraux date-heure — TOML prend en charge nativement les dates RFC 3339 comme 2026-03-15T14:30:00Z, les dates locales, les heures locales et les decalages date-heure.
- Chaines multiligne — les chaines entre triple guillemets ("""texte""") preservent les sauts de ligne. Les chaines litterales utilisent des guillemets simples ('pas\echappement').
Modeles TOML courants
TOML est largement utilise dans les fichiers de configuration de projets a travers differents ecosystemes.
- Cargo.toml — le gestionnaire de paquets de Rust utilise TOML pour les metadonnees du projet, les dependances, les profils de compilation et la configuration de l'espace de travail
- pyproject.toml — la configuration moderne du systeme de compilation de Python, definie par PEP 517/518, remplace setup.py et setup.cfg par un fichier TOML standardise
- Configuration Hugo — le generateur de sites statiques Hugo utilise TOML pour la configuration du site incluant les themes, menus, taxonomies et parametres de compilation
- Configuration Netlify — netlify.toml configure les commandes de compilation, les regles de redirection, les variables d'environnement et les contextes de deploiement
Essayez gratuitement — sans inscription
Valider du TOML en ligne →Erreurs de validation courantes
TOML est strict par conception — de nombreuses erreurs que YAML accepterait silencieusement echoueront en TOML.
- Cles dupliquees — TOML interdit de definir la meme cle deux fois dans la meme table. Cela inclut les cles definies par notation pointee et les en-tetes de table reguliers.
- Format de date invalide — TOML exige des dates RFC 3339. Les erreurs courantes incluent l'absence du separateur T ou l'utilisation de barres obliques au lieu de tirets.
- Types de tableau mixtes — tous les elements d'un tableau TOML doivent etre du meme type. [1, "deux", 3] est invalide car il melange des entiers et des chaines.
- Chaines non fermees — oublier de fermer une chaine entre guillemets ou utiliser le mauvais type de guillemet cause des erreurs d'analyse.
TOML vs YAML vs JSON
Chaque format a des atouts qui le rendent mieux adapte a certains cas d'utilisation.
- Lisibilite — TOML et YAML sont tous deux tres lisibles pour les humains. TOML utilise une syntaxe explicite (crochets, signes egaux) tandis que YAML repose sur l'indentation. JSON est moins lisible pour la configuration en raison des guillemets obligatoires et de l'absence de commentaires.
- Rigueur — TOML est le plus strict des trois. Il rejette les constructions ambigues et n'a pas de coercition de type implicite. La flexibilite de YAML (yes/no comme booleens) cause souvent des comportements inattendus.
- Commentaires — TOML et YAML prennent en charge les commentaires (TOML utilise #, YAML utilise #). JSON ne prend pas en charge les commentaires du tout, ce qui le rend moins adapte aux fichiers de configuration.
Questions frequemment posees
Comment fonctionnent les tables imbriquees en TOML ?
TOML prend en charge les tables imbriquees via deux mecanismes : les cles pointees (a.b.c = valeur) et les en-tetes de table ([parent.enfant]). Pour les tableaux de tables, utilisez des doubles crochets ([[nom_tableau]]). Chaque bloc [[nom_tableau]] ajoute un nouvel element au tableau.
Quelles sont les differences entre TOML v1.0 et les versions anterieures ?
TOML v1.0 (publie en janvier 2021) est la premiere version stable. Les changements cles incluent la gestion clarifiee des date-heure, la semantique formalisee des tables en ligne et le comportement affine des tableaux de tables. La plupart des outils modernes utilisent TOML v1.0.
Comment convertir du YAML en TOML ?
YAML et TOML ont des modeles de donnees differents, donc la conversion n'est pas toujours biunivoque. Les structures simples cle-valeur se convertissent directement. Les fonctionnalites YAML comme les ancres et les alias n'ont pas d'equivalent TOML.