Travailler avec YAML en JavaScript (Node.js)
YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'homme, souvent utilisé pour les fichiers de configuration (par exemple, dans Docker Compose, Kubernetes, Ansible). Dans l'écosystème Node.js, il existe deux bibliothèques principales pour travailler avec YAML : js-yaml (la plus populaire) et yaml (moderne, avec support des flux).
Dans cet article, nous examinerons les deux bibliothèques, apprendrons à analyser du YAML en objets JavaScript, à sérialiser des objets en YAML, ainsi qu'à gérer les erreurs et à travailler avec des fichiers.
Installation des bibliothèques
Pour commencer, installez l'une des bibliothèques via npm :
# Installation de js-yaml (recommandé pour la plupart des projets)npm install js-yaml
# Installation de la bibliothèque plus moderne yamlnpm install yamlBibliothèque js-yaml
js-yaml est la bibliothèque la plus mature et la plus largement utilisée pour travailler avec YAML dans Node.js. Elle prend en charge la spécification complète YAML 1.2, y compris les types de données complexes, les balises et les schémas personnalisés.
Analyse d'une chaîne YAML
const yaml = require('js-yaml');
const yamlString = `server: host: localhost port: 8080 ssl: truedatabase: driver: postgresql host: db.example.com port: 5432 credentials: user: admin password: secret`;
try { const data = yaml.load(yamlString); console.log(data.server.host); // "localhost" console.log(data.database.credentials.user); // "admin"} catch (e) { console.error('Erreur d'analyse YAML :', e.message);}Analyse d'un fichier YAML
const fs = require('fs');const yaml = require('js-yaml');
try { const fileContents = fs.readFileSync('./config.yaml', 'utf8'); const data = yaml.load(fileContents); console.log(data);} catch (e) { console.error('Erreur de lecture du fichier :', e.message);}Sérialisation en YAML
const yaml = require('js-yaml');
const config = { app: { name: "MyApp", version: "1.0.0" }, features: { logging: true, cache: { ttl: 3600, type: "redis" } }};
const yamlString = yaml.dump(config, { indent: 2, // indentation de 2 espaces lineWidth: 80, // longueur maximale de ligne noRefs: true, // ne pas utiliser de références sortKeys: true // trier les clés});
console.log(yamlString);// Sortie :// app:// name: MyApp// version: 1.0.0// features:// cache:// ttl: 3600// type: redis// logging: trueTravailler avec des types personnalisés
js-yaml prend en charge les balises YAML personnalisées pour traiter des types de données spéciaux :
const yaml = require('js-yaml');
// Création d'un type personnalisé pour la dateconst DateType = new yaml.Type('!date', { kind: 'scalar', resolve: (data) => data.match(/^\\d{4}-\\d{2}-\\d{2}$/), construct: (data) => new Date(data), instanceOf: Date, represent: (date) => date.toISOString().split('T')[0]});
// Création d'un schéma avec un type personnaliséconst CUSTOM_SCHEMA = yaml.DEFAULT_SCHEMA.extend([DateType]);
const yamlString = `event: !date 2025-12-31name: "New Year Party"`;
const data = yaml.load(yamlString, { schema: CUSTOM_SCHEMA });console.log(data.event instanceof Date); // trueconsole.log(data.event.getFullYear()); // 2025Bibliothèque yaml
yaml est une bibliothèque plus moderne qui offre une analyse par flux et un meilleur support Unicode. Elle implémente également la spécification YAML 1.2.
Analyse de base
const YAML = require('yaml');
const doc = YAML.parse(`person: name: Иван age: 30 hobbies: - программирование - чтение`);
console.log(doc.person.name); // "Иван"console.log(doc.person.hobbies[0]); // "программирование"
Aussi dans la bibliothèque
Travailler avec Kafka en TypeScript : la bibliothèque KafkaJS et exemples
React pour JavaScript (Node.js) : guide complet avec exemples
gRPC pour TypeScript : bibliothèques, configuration et exemples de code
Migrations de bases de données en Kotlin : Aperçu des outils et approches
Bibliothèques WebSocket pour Node.js : ws, Socket.IO, uWS — aperçu complet