Travailler avec YAML dans Node.js : bibliothèques js-yaml et yaml

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 yaml


Bibliothè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: true


Travailler 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()); // 2025


Bibliothè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]); // "программирование"

Recommendations