Formateur YAML

Publicité

Formatez, validez YAML et convertissez entre YAML et JSON.

Entrée
Sortie
Publicité

À propos de cet outil

YAML (YAML Ain't Markup Language) a été créé à l'origine par Clark Evans en 2001, avec les contributions d'Ingy döt Net et d'Oren Ben-Kiki. Le nom était initialement un acronyme ludique pour "Yet Another Markup Language", mais a ensuite été rebaptisé en acronyme récursif pour souligner que YAML est fondamentalement un format de sérialisation de données, pas un langage de balisage de documents. La première spécification officielle, [YAML 1.0](https://yaml.org/spec/1.0/), a été publiée en janvier 2004, avec la [spécification YAML 1.2](https://yaml.org/spec/1.2.2/) actuelle sortie en 2009. YAML a été conçu avec la lisibilité humaine comme objectif principal. Il utilise une structure basée sur l'indentation (espaces uniquement, jamais de tabulations) et une ponctuation minimale, le rendant visuellement plus propre que JSON ou XML pour les fichiers de configuration. YAML prend en charge des types de données riches incluant les scalaires, séquences, mappages, chaînes multi-lignes (bloc littéral avec | et bloc plié avec >), ancres et alias pour la réutilisation des données, et même des clés complexes. C'est un surensemble strict de JSON, ce qui signifie que tout document JSON valide est aussi du YAML valide. La philosophie de conception de YAML s'inspire de langages comme Python et des conventions de formatage des e-mails (RFC 2822). YAML est devenu le standard de facto pour la configuration dans les outils modernes DevOps et cloud-native. Les manifestes [Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/), les fichiers Docker Compose, les playbooks Ansible, les workflows GitHub Actions, les définitions GitLab CI et les templates de charts Helm utilisent tous YAML de manière extensive. Les plateformes d'Infrastructure-as-Code comme Terraform et CloudFormation s'appuient également sur YAML. Ce formateur utilise la bibliothèque [js-yaml](https://github.com/nodeca/js-yaml), l'implémentation JavaScript la plus largement adoptée du parseur YAML 1.2. Il prend en charge le formatage avec indentation personnalisable, la validation syntaxique avec rapports d'erreurs détaillés et la conversion bidirectionnelle entre YAML et JSON. Tout le traitement se fait entièrement dans votre navigateur — vos données ne quittent jamais votre appareil.

Sources: YAML

Comment Utiliser

  1. Collez votre code YAML ou JSON dans la zone de saisie.
  2. Cliquez sur Formater pour embellir, Valider pour vérifier la syntaxe, ou utilisez les boutons de conversion.
  3. Copiez la sortie formatée ou utilisez la conversion YAML↔JSON selon vos besoins.

L'Évolution du YAML

YAML a vu le jour en 2001 sous l'impulsion de Clark Evans, avec Ingy döt Net et Oren Ben-Kiki, dans le but de créer une alternative conviviale à XML pour la sérialisation de données et la configuration. À l'époque, XML était le format dominant pour les données structurées, mais sa syntaxe verbeuse avec des balises fermantes, des guillemets d'attributs et des déclarations d'espaces de noms le rendait peu maniable pour les fichiers de configuration que les développeurs modifiaient manuellement au quotidien. La structure basée sur l'indentation de YAML, inspirée de Python et des conventions de formatage des e-mails, offrait une approche radicalement plus épurée. Le format a connu sa première grande vague d'adoption grâce au framework Ruby on Rails en 2004-2005, qui utilisait database.yml pour la configuration des bases de données et fixtures.yml pour les données de test. Cela a initié toute une génération de développeurs web à YAML comme format de configuration par défaut. La spécification YAML a elle-même évolué à travers plusieurs versions : YAML 1.0 en 2004 a formalisé le langage, YAML 1.1 en 2005 a ajouté des fonctionnalités comme les clés de fusion et une résolution de types améliorée, et YAML 1.2 en 2009 a aligné la spécification plus étroitement avec JSON, rendant tout document JSON valide également valide en YAML. L'essor du DevOps et de l'infrastructure cloud-native à partir de 2013 a transformé YAML d'une commodité populaire en un standard industriel. Kubernetes a adopté YAML pour tous les manifestes de ressources, Docker Compose l'a utilisé pour les définitions multi-conteneurs, et les plateformes CI/CD comme GitHub Actions, GitLab CI et CircleCI ont toutes choisi YAML pour la configuration des pipelines. Les playbooks Ansible, les charts Helm et les templates CloudFormation ont encore renforcé sa domination dans l'infrastructure-as-code. L'histoire de YAML n'est pas sans controverse. Le tristement célèbre "problème de la Norvège" — où le code pays NO est silencieusement interpréété comme le booléen false en YAML 1.1 — a mis en lumière les dangers de la coercition de types implicite. De même, des valeurs comme "on", "off", "yes" et des numéros de version comme 1.0 interpréétés comme des booléens ou des flottants ont causé d'innombrables bugs subtils. La spécification YAML 1.2 a résolu bon nombre de ces problèmes en resserrant les règles de résolution de types, mais les parseurs hérités utilisant encore le comportement 1.1 restent une source de frustration. Malgré ces bizarreries, la lisibilité et l'expressivité de YAML en ont fait le langage incontesté de la gestion de configuration moderne.

Comprendre vos Résultats

Après le formatage, votre YAML est affiché avec une indentation cohérente qui montre clairement la structure hiérarchique de vos données. Les mappages et séquences imbriqués sont chacun indentés d'un niveau supplémentaire, facilitant le suivi visuel des relations parent-enfant. Le formateur standardise l'indentation dans tout le document, ce qui est crucial puisque YAML repose sur les espaces pour définir la structure. Un badge vert "YAML Valide" confirme que votre document est analysé avec succès selon les règles YAML 1.2. Si des erreurs sont détectées, un badge rouge "YAML Invalide" apparaît avec un message d'erreur détaillé incluant le numéro de ligne, la position de colonne et un extrait de code montrant l'emplacement exact du problème. Les erreurs courantes incluent l'indentation incohérente, l'utilisation de tabulations au lieu d'espaces, les deux-points manquants après les clés de mappage, les indicateurs incorrects de chaînes multi-lignes et les clés dupliquées dans le même mappage. Lors de la conversion en JSON, sachez que les commentaires, ancres et alias YAML sont supprimés. La sortie JSON utilise l'impression élégante standard avec une indentation de 2 espaces, la rendant immédiatement utilisable dans les applications JavaScript ou les charges API.

Comment Utiliser

  1. Collez votre code YAML ou JSON dans la zone de saisie.
  2. Cliquez sur Formater pour embellir, Valider pour vérifier la syntaxe, ou utilisez les boutons de conversion.
  3. Copiez la sortie formatée ou utilisez la conversion YAML↔JSON selon vos besoins.

Méthodologie

Cet outil utilise la bibliothèque js-yaml, une implémentation JavaScript complète conforme à la spécification YAML 1.2, pour toutes les opérations d'analyse et de sérialisation. Lorsque vous saisissez du YAML, la fonction safeLoad de js-yaml analyse le texte en un arbre d'objets JavaScript natif, résolvant les ancres, alias et coercitions de type. La fonction safeLoad utilise spécifiquement le DEFAULT_SAFE_SCHEMA, qui empêche l'exécution de code JavaScript arbitraire via les tags YAML, ce qui rend sur le traitement d'entrées non fiables. L'objet résultant est ensuite re-sérialisé en YAML à l'aide de safeDump avec le niveau d'indentation configuré. Pour la conversion YAML vers JSON, l'objet JavaScript analysé est passé à JSON.stringify avec des options de formatage d'impression élégante. Pour la conversion JSON vers YAML, l'entrée est d'abord analysée avec JSON.parse natif, puis sérialisée via safeDump de js-yaml. La validation fonctionne en tentant d'analyser l'entrée et en interceptant les erreurs YAMLException, qui incluent des informations détaillées sur le numéro de ligne, la position de colonne et l'extrait contextuel. Les commentaires sont préservés pendant le formatage YAML-vers-YAML mais sont nécessairement perdus lors de la conversion JSON. De même, les ancres et alias sont déréférencés en leurs valeurs complètes dans la sortie JSON.

Exemples Pratiques

Un ingénieur DevOps met à jour un manifeste de déploiement Kubernetes pour faire passer un service de 3 à 5 réplicas. Après avoir modifié le YAML manuellement, il le colle dans ce formateur pour valider que l'indentation est correcte et qu'aucune erreur de syntaxe n'a été introduite avant d'appliquer le changement avec kubectl. Un développeur convertit un fichier de configuration JSON existant en YAML pour un nouveau playbook Ansible. Il colle le JSON dans la zone de saisie, clique sur "JSON vers YAML" et reçoit une sortie YAML proprement formatée prête à être enregistrée comme fichier playbook. Un chef d'équipe examine un fichier Docker Compose fourni par un développeur junior. Il formate le YAML pour standardiser l'indentation à 2 espaces, rendant le fichier cohérent avec le reste des fichiers de configuration du projet.

Conseils et Bonnes Pratiques

Utilisez toujours des espaces pour l'indentation, jamais des tabulations. La plupart des parseurs YAML rejetteront complètement les tabulations, et mélanger tabulations et espaces cause des erreurs subtiles et difficiles à déboguer. Restez à 2 espaces par niveau pour la cohérence avec les conventions de la communauté. Mettez entre guillemets les chaînes qui pourraient être mal interpréétées comme d'autres types : les valeurs comme "yes", "no", "true", "false", "null", "1.0" et "on" sont automatiquement converties en booléens ou nombres en YAML. Entourez-les de guillemets simples ou doubles pour les préserver comme chaînes. Utilisez les ancres (&nom) et alias (*nom) pour éviter de dupliquer de grands blocs de configuration. C'est particulièrement utile dans les pipelines CI/CD où plusieurs tâches partagent des paramètrès communs. Validez toujours votre YAML après modification, car un seul espace mal placé peut changer toute la structure du document.

Tous les calculs sont effectués localement dans votre navigateur. Aucune donnée n'est envoyée à un serveur.

Intégrer cet outil

Obtenir le code

Cet outil vous a-t-il été utile ?
Souhaitez-vous nous en dire plus ?
0/500
Souhaitez-vous un suivi ?
Merci pour votre retour !

Questions fréquentes

Quelle est la différence entre YAML et JSON?
YAML utilise l'indentation pour la structure et est plus lisible par l'homme, souvent utilisé pour les fichiers de configuration. JSON utilise des accolades et des crochets, est plus compact et largement utilisé pour l'échange de données et les APIs.
Quelles fonctionnalités YAML sont prises en charge?
Cet outil prend en charge les fonctionnalités standard de YAML 1.2 incluant: paires clé-valeur, objets imbriqués, tableaux, chaînes multi-lignes, commentaires, ancres et alias, et tous les types de données de base.
Pourquoi l'indentation est-elle importante en YAML?
YAML utilise l'indentation (espaces, pas de tabulations!) pour définir la structure et la hiérarchie. Contrairement à JSON qui utilise des accolades, YAML repose entièrement sur une indentation cohérente. Généralement 2 espaces sont utilisés par niveau.
Comment YAML gère-t-il les chaînes multilignes ?
YAML propose plusieurs styles de chaînes multilignes. Le style bloc littéral (|) préserve les sauts de ligne exactement tels qu'ils sont écrits — chaque nouvelle ligne dans la source devient une nouvelle ligne dans la valeur analysée. Le style bloc plié (>) joint les lignes avec des espaces, traitant les sauts de ligne simples comme des espaces et les doubles comme des sauts de paragraphe. Les deux styles peuvent être modifiés avec des indicateurs de troncature : strip (-) supprime les nouvelles lignes finales, keep (+) les préserve et clip (par défaut) garde une nouvelle ligne finale. Par exemple, 'description: |\n Ligne un\n Ligne deux' produit une chaîne avec un vrai saut de ligne entre les lignes.
Pourquoi YAML présente-t-il des problèmes de sécurité ?
Le problème de sécurité le plus connu de YAML est la désérialisation non sécurisée. Certains analyseurs YAML (en particulier les anciennes versions de PyYAML et la bibliothèque YAML de Ruby) prennent en charge des balises spécifiques au langage qui peuvent instancier des objets arbitraires lors de l'analyse, permettant potentiellement l'exécution de code à distance. Par exemple, la balise !!python/object dans PyYAML peut exécuter du code Python arbitraire. Bonnes pratiques modernes : utilisez toujours des fonctions de chargement sécurisées (yaml.safe_load en Python, YAML.parse en JS), ne parsez jamais du YAML non fiable avec l'instanciation complète d'objets activée et préférez JSON pour l'échange de données avec des sources non fiables. L'analyseur basé sur navigateur de cet outil n'exécute pas de code arbitraire.
Puis-je convertir entre YAML et JSON avec cet outil ?
Cet outil se concentre sur le formatage et la validation YAML, pas sûr la conversion entre formats. Cependant, YAML est un surensemble de JSON — chaque document JSON valide est aussi du YAML valide. Cela signifie que vous pouvez coller du JSON dans le formateur YAML et il sera analysé correctement. Pour une conversion dédiée JSON-vers-YAML et YAML-vers-JSON avec un contrôle total sur les options de sortie, InnoviCat propose des outils de conversion séparés. La différence clé entre les formats pour la conversion : YAML prend en charge les commentaires, les ancres et les chaînes multilignes qui n'ont pas d'équivalent JSON, donc la conversion YAML-vers-JSON peut perdre ces fonctionnalités.