Travailler avec YAML en JavaScript (Node.js) : guide complet
\n\nYAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'homme, largement utilisé pour les fichiers de configuration, la description d'API, les pipelines CI/CD et l'échange de données. Dans l'écosystème Node.js, il existe plusieurs bibliothèques puissantes pour travailler avec YAML. Dans cet article, nous allons détailler les principaux outils, leurs fonctionnalités et des exemples d'utilisation.
\n\nBibliothèques populaires pour YAML dans Node.js
\n\nLes bibliothèques les plus courantes pour travailler avec YAML dans l'environnement Node.js :
\n\n- \n
- js-yaml — la bibliothèque la plus populaire et activement maintenue. Elle prend en charge l'ensemble des opérations : parsing, sérialisation, schémas et types personnalisés. \n
- yaml (paquet yaml) — une alternative moderne avec prise en charge du parsing strict, des commentaires et de l'AST (arbre syntaxique abstrait). \n
- yamljs — une bibliothèque légère avec une API simple, adaptée aux tâches de base. \n
Installation de la bibliothèque js-yaml
\n\nPour commencer à travailler avec YAML dans Node.js, installez la bibliothèque via npm :
\n\nnpm install js-yaml\n\nAprès l'installation, importez la bibliothèque dans votre projet :
\n\nconst yaml = require('js-yaml');\nconst fs = require('fs');\n\nParsing YAML en objet JavaScript
\n\nL'opération principale — convertir une chaîne YAML en objet JavaScript :
\n\nconst yamlString = `\nserver:\n host: localhost\n port: 8080\n ssl: true\ndatabases:\n - name: users\n type: postgres\n - name: logs\n type: mongodb\n`;\n\ntry {\n const data = yaml.load(yamlString);\n console.log(data.server.host); // "localhost"\n console.log(data.databases[0].name); // "users"\n} catch (e) {\n console.error('Erreur de parsing YAML :', e.message);\n}\n\nLa méthode yaml.load() convertit en toute sécurité une chaîne YAML en objet. Pour charger depuis un fichier, utilisez :
try {\n const config = yaml.load(fs.readFileSync('config.yaml', 'utf8'));\n console.log(config);\n} catch (e) {\n console.error('Erreur de lecture de la configuration :', e);\n}\n\nSérialisation d'un objet JavaScript en YAML
\n\nL'opération inverse — convertir un objet en chaîne YAML :
\n\nconst configObject = {\n app: {\n name: "MyApp",\n version: "1.0.0"\n },\n features: ["auth", "logging", "analytics"],\n database: {\n host: "db.example.com",\n port: 5432\n }\n};\n\nconst yamlString = yaml.dump(configObject, {\n indent: 2,\n lineWidth: 120,\n noRefs: true\n});\n\nconsole.log(yamlString);\n// Sortie :\n// app:\n// name: MyApp\n// version: 1.0.0\n// features:\n// - auth\n// - logging\n// - analytics\n// database:\n// host: db.example.com\n// port: 5432\n\nParamètres de la méthode yaml.dump() :
- \n
indent— nombre d'espaces pour les retraits (par défaut 2) \n lineWidth— longueur maximale de la ligne (par défaut 80) \n noRefs— désactivation de l'utilisation des ancres et des références \n skipInvalid— ignorer les valeurs invalides au lieu de lever une erreur \n
Travailler avec des types YAML personnalisés
\n\njs-yaml prend en charge les schémas et types de données personnalisés. Par exemple, on peut ajouter la prise en charge des dates :
\n\nconst yaml = require('js-yaml');\n\n// Création d'un schéma personnalisé avec prise en charge des dates\nconst schema = yaml.DEFAULT_SCHEMA.extend([\n new yaml.Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: (data) => {\n return !isNaN(Date.parse(data));\n },\n construct: (data) => {\n return new Date(data);\n },\n instanceOf: Date,\n represent: (date) => {\n return date.toISOString();\n }\n })\n]);\n\nconst yamlString = 'event_date: 2024-03-15T14:30:00Z';\nconst parsed = yaml.load(yamlString, { schema });\nconsole.log(parsed.event_date inst Aussi dans la bibliothèque
MetricsKit — surveillance des applications Swift sur iOS/macOS
Configuration d'applications JavaScript : la bibliothèque config
Eloquent ORM pour PHP : guide complet avec exemples
Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS via HttpClient