JavaScript (Node.js) के लिए CLI फ्रेमवर्क: शक्तिशाली कंसोल एप्लिकेशन बनाना
\n\nकमांड लाइन इंटरफेस (CLI) का विकास Node.js इकोसिस्टम में एक प्रमुख कार्य है। सरल स्क्रिप्ट से लेकर DevOps के लिए जटिल टूल तक - CLI एप्लिकेशन हमें हर जगह घेरे हुए हैं। हालांकि, आर्गुमेंट पार्सर लिखना, सबकमांड को संभालना और मैन्युअल रूप से हेल्प आउटपुट देना एक थकाऊ और त्रुटि-प्रवण कार्य है। यहीं पर JavaScript (Node.js) के लिए CLI फ्रेमवर्क मददगार साबित होते हैं, जो सारी नियमित प्रक्रिया अपने हाथ में ले लेते हैं।
\n\nइस लेख में, हम दो सबसे लोकप्रिय फ्रेमवर्क: Commander.js और Yargs पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि कैसे आर्गुमेंट, ऑप्शन, रंगीन आउटपुट और स्वचालित हेल्प जनरेशन के साथ पेशेवर CLI एप्लिकेशन जल्दी से बनाए जा सकते हैं।
\n\nCommander.js — क्लासिक और सरलता
\n\nCommander.js Node.js पर CLI बनाने के लिए सबसे प्रसिद्ध और व्यापक रूप से उपयोग किया जाने वाला फ्रेमवर्क है। इसका उपयोग Vue CLI, Angular CLI और कई अन्य प्रोजेक्ट्स में किया जाता है। इसका मुख्य लाभ इसका सहज ज्ञान युक्त API है, जो चेन कॉल पर आधारित है।
\n\nइंस्टॉलेशन
\nnpm install commander\n\nबुनियादी उदाहरण
\nconst { Command } = require('commander');\nconst program = new Command();\n\nprogram\n .name('greet')\n .description('अभिवादन के लिए CLI')\n .version('1.0.0');\n\nprogram\n .command('hello')\n .description('उपयोगकर्ता का अभिवादन करें')\n .argument('<name>', 'उपयोगकर्ता का नाम')\n .option('-l, --language <lang>', 'अभिवादन की भाषा', 'रूसी')\n .action((name, options) => {\n if (options.language === 'अंग्रेज़ी') {\n console.log(`Hello, ${name}!`);\n } else {\n console.log(`Привет, ${name}!`);\n }\n });\n\nprogram.parse(process.argv);\n\nइस उदाहरण में, हमने greet hello कमांड बनाया है, जो एक अनिवार्य आर्गुमेंट name और एक वैकल्पिक ऑप्शन --language स्वीकार करता है। Commander स्वचालित रूप से --help कमांड के लिए हेल्प जनरेट करेगा।
सबकमांड के लिए समर्थन
\nCommander कमांड के पदानुक्रम को अच्छी तरह से संभालता है। आप नेस्टेड कमांड बना सकते हैं, जो जटिल टूल के लिए विशेष रूप से उपयोगी है:
\nconst project = program.command('project');\n\nproject\n .command('init')\n .description('प्रोजेक्ट आरंभ करें')\n .action(() => {\n console.log('प्रोजेक्ट आरंभ किया गया');\n });\n\nproject\n .command('build')\n .description('प्रोजेक्ट बनाएं')\n .option('-p, --production', 'प्रोडक्शन बिल्ड')\n .action((options) => {\n console.log(options.production ? 'प्रोडक्शन बिल्ड' : 'सामान्य बिल्ड');\n });\n\nYargs — लचीलापन और शक्ति
\n\nYargs एक और शक्तिशाली फ्रेमवर्क है जो आर्गुमेंट पार्सिंग पर ध्यान केंद्रित करता है और बहुत लचीली क्षमताएं प्रदान करता है। यह विशेष रूप से तब अच्छा होता है जब आपको पार्सर के व्यवहार पर सटीक नियंत्रण की आवश्यकता होती है, या जब आप जटिल बहु-स्तरीय इंटरफेस बना रहे होते हैं।
\n\nइंस्टॉलेशन
\nnpm install yargs\n\nYargs के साथ उदाहरण
\nconst yargs = require('yargs/yargs');\nconst { hideBin } = require('yargs/helpers');\n\nconst argv = yargs(hideBin(process.argv))\n .command('serve [port]', 'सर्वर चलाएं', (yargs) => {\n yargs\n .positional('port', {\n describe: 'सर्वर के लिए पोर्ट',\n default: 3000\n });\n }, (argv) => {\n console.log(`सर्वर पोर्ट ${argv.port} पर चल रहा है`);\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'विस्तृत आउटपुट'\n })\n .example('$0 serve 8080', 'पोर्ट 8080 पर सर्वर चलाएं')\n .demandCommand(1, 'कमांड निर्दिष्ट करना आवश्यक है')\n .help()\n .argv;\n\nYargs कमांड को परिभाषित करने के लिए अधिक नियतात्मक दृष्टिकोण प्रदान करता है। आप सटीक रूप से निर्दिष्ट कर सकते हैं कि कौन से आर्गुमेंट पोजीशनल हैं, उनके लिए डिफ़ॉल्ट मान सेट कर सकते हैं, प्रकारों की जांच कर सकते हैं और भी बहुत कुछ कर सकते हैं।
\n\nमान्यकरण और प्रकार
\nYargs की एक मजबूत