JavaScript (Node.js) में YAML के साथ काम करना: संपूर्ण गाइड
YAML (YAML Ain't Markup Language) डेटा सीरियलाइज़ेशन का एक मानव-पठनीय फ़ॉर्मेट है, जिसका उपयोग कॉन्फ़िगरेशन फ़ाइलों, API विवरण, CI/CD पाइपलाइनों और डेटा एक्सचेंज के लिए व्यापक रूप से किया जाता है। Node.js इकोसिस्टम में YAML के साथ काम करने के लिए कई शक्तिशाली लाइब्रेरी उपलब्ध हैं। इस लेख में हम मुख्य टूल्स, उनकी क्षमताओं और उपयोग के उदाहरणों पर विस्तार से चर्चा करेंगे।
Node.js में YAML के लिए लोकप्रिय लाइब्रेरी
Node.js वातावरण में YAML के साथ काम करने के लिए सबसे आम लाइब्रेरी:
- js-yaml — सबसे लोकप्रिय और सक्रिय रूप से समर्थित लाइब्रेरी। यह पार्सिंग, सीरियलाइज़ेशन, कस्टम स्कीमा और टाइप्स सहित सभी ऑपरेशन को सपोर्ट करती है।
- yaml (yaml पैकेज) — एक आधुनिक विकल्प जो सख्त पार्सिंग, कमेंट्री और AST (एब्सट्रैक्ट सिंटैक्स ट्री) को सपोर्ट करता है।
- yamljs — सरल API वाली हल्की लाइब्रेरी, बुनियादी कार्यों के लिए उपयुक्त।
js-yaml लाइब्रेरी की स्थापना
Node.js में YAML के साथ काम शुरू करने के लिए npm के माध्यम से लाइब्रेरी इंस्टॉल करें:
npm install js-yaml
इंस्टॉलेशन के बाद, अपने प्रोजेक्ट में लाइब्रेरी को इम्पोर्ट करें:
const yaml = require('js-yaml');
const fs = require('fs');
YAML को JavaScript ऑब्जेक्ट में पार्स करना
मुख्य ऑपरेशन — YAML स्ट्रिंग को JavaScript ऑब्जेक्ट में बदलना:
const yamlString = `
server:
host: localhost
port: 8080
ssl: true
databases:
- name: users
type: postgres
- name: logs
type: mongodb
`;
try {
const data = yaml.load(yamlString);
console.log(data.server.host); // "localhost"
console.log(data.databases[0].name); // "users"
} catch (e) {
console.error('YAML पार्सिंग में त्रुटि:', e.message);
}
yaml.load() मेथड YAML स्ट्रिंग को सुरक्षित रूप से ऑब्जेक्ट में बदलता है। फ़ाइल से लोड करने के लिए उपयोग करें:
try {
const config = yaml.load(fs.readFileSync('config.yaml', 'utf8'));
console.log(config);
} catch (e) {
console.error('कॉन्फ़िगरेशन पढ़ने में त्रुटि:', e);
}
JavaScript ऑब्जेक्ट को YAML में सीरियलाइज़ करना
उल्टा ऑपरेशन — ऑब्जेक्ट को YAML स्ट्रिंग में बदलना:
const configObject = {
app: {
name: "MyApp",
version: "1.0.0"
},
features: ["auth", "logging", "analytics"],
database: {
host: "db.example.com",
port: 5432
}
};
const yamlString = yaml.dump(configObject, {
indent: 2,
lineWidth: 120,
noRefs: true
});
console.log(yamlString);
// आउटपुट:
// app:
// name: MyApp
// version: 1.0.0
// features:
// - auth
// - logging
// - analytics
// database:
// host: db.example.com
// port: 5432
yaml.dump() मेथड के पैरामीटर:
indent— इंडेंटेशन के लिए स्पेस की संख्या (डिफ़ॉल्ट 2)lineWidth— लाइन की अधिकतम लंबाई (डिफ़ॉल्ट 80)noRefs— एंकर और रेफरेंस के उपयोग को बंद करनाskipInvalid— त्रुटि फेंकने के बजाय अमान्य मानों को छोड़ना
कस्टम YAML टाइप्स के साथ काम करना
js-yaml कस्टम स्कीमा और डेटा टाइप्स को सपोर्ट करता है। उदाहरण के लिए, तिथियों का समर्थन जोड़ा जा सकता है:
const yaml = require('js-yaml');
// तिथियों के समर्थन के साथ कस्टम स्कीमा बनाना
const schema = yaml.DEFAULT_SCHEMA.extend([
new yaml.Type('tag:yaml.org,2002:timestamp', {
kind: 'scalar',
resolve: (data) => {
return !isNaN(Date.parse(data));
},
construct: (data) => {
return new Date(data);
},
instanceOf: Date,
represent: (date) => {
return date.toISOString();
}
})
]);
const yamlString = 'event_date: 2024-03-15T14:30:00Z';
const parsed = yaml.load(yamlString, { schema });
console.log(parsed.event_date instanceof Date); // true
YAML डेटा का वैलिडेशन
YAML की सटीकता जांचने के लिए, पार्सिंग को ट्राई-कैच ब्लॉक में लपेटें और स्कीमा-आधारित वैलिडेशन टूल्स जैसे ajv का उपयोग करें:
const Ajv = require('ajv');
const ajv = new Ajv();
const schema = {
type: 'object',
properties: {
server: {
type: 'object',
properties: {
host: { type: 'string' },
port: { type: 'integer', minimum: 1, maximum: 65535 }
},
required: ['host', 'port']
}
},
required: ['server']
};
const yamlString = `server:
host: localhost
port: 8080`;
try {
const data = yaml.load(yamlString);
const validate = ajv.compile(schema);
const valid = validate(data);
if (valid) {
console.log('YAML डेटा मान्य है!');
} else {
console.error('वैलिडेशन त्रुटियाँ:', validate.errors);
}
} catch (e) {
console.error('YAML पार्सिंग त्रुटि:', e.message);
}
निष्कर्ष
YAML Node.js डेवलपर्स के लिए एक शक्तिशाली टूल है। js-yaml, yaml और yamljs जैसी लाइब्रेरी के साथ, आप आसानी से YAML डेटा को पार्स, सीरियलाइज़ और वैलिडेट कर सकते हैं। चाहे आप कॉन्फ़िगरेशन फ़ाइलों, API डेटा या CI/CD पाइपलाइनों के साथ काम कर रहे हों, YAML आपके प्रोजेक्ट को अधिक लचीला और पठनीय बनाता है।