इस सहायक लाइब्रेरी का उपयोग करके मानक कमांड-लाइन इंटरफ़ेस के साथ प्रोग्राम बनाना सीखें।

सीएलआई (कमांड लाइन इंटरफ़ेस) एप्लिकेशन सरल टेक्स्ट-आधारित ऐप हैं जो विशिष्ट कार्यों को पूरा करने के लिए टर्मिनल में चलते हैं। सीएलआई एप्लिकेशन लगभग हर डेवलपर और आईटी पेशेवर के वर्कफ़्लो में महत्वपूर्ण भूमिका निभाते हैं।

वे अधिकतर उपयोगिता उपकरण हैं जो ऑपरेटिंग सिस्टम या अनुप्रयोगों के साथ इंटरैक्ट करते हैं उपयोगकर्ता के इनपुट के अनुसार कार्य करने के लिए स्थानीय रूप से स्थापित या इंटरनेट पर उपलब्ध है निर्देश

सीएलआई अनुप्रयोगों को समझना

एक कमांड-लाइन इंटरफ़ेस आपको टेक्स्ट की पंक्तियाँ टाइप करके प्रोग्राम के साथ इंटरैक्ट करने की सुविधा देता है। कई सीएलआई प्रोग्राम आपके प्रारंभ करने के लिए उपयोग किए जाने वाले कमांड के आधार पर अलग-अलग तरीके से चलते हैं।

उदाहरण के लिए, ls प्रोग्राम फ़ाइल जानकारी प्रदर्शित करता है और निर्देशिकाओं की सामग्री। आप इसे इस प्रकार चला सकते हैं:

ls -l /home

इस आदेश में शामिल हैं:

  • कार्यक्रम का नाम: रास.
  • एक विकल्प (या ध्वज)। इस मामले में, -एल एक विकल्प है जो "लंबे" का संक्षिप्त रूप है और अधिक विस्तृत जानकारी प्रदान करता है।
  • instagram viewer
  • एक विवाद, /home. यहां, तर्क जानकारी दिखाने के लिए निर्देशिका के लिए एक पथ निर्दिष्ट करता है।

जबकि प्रत्येक प्रोग्राम अपने स्वयं के कमांड-लाइन इंटरफ़ेस को परिभाषित कर सकता है, कुछ तत्व सामान्य और व्यापक उपयोग में हैं। आपको इन मानकों का पालन करना चाहिए ताकि जो कोई कमांड-लाइन इंटरफ़ेस से परिचित हो वह आपके प्रोग्राम का आसानी से उपयोग कर सके।

कमांडर.जेएस क्या है?

कमांडर.जेएस है एक पैकेज जो आपको Node.js में CLI ऐप्स बनाने की सुविधा देता है. इसमें सुविधाओं की एक समृद्ध लाइब्रेरी है जो आपको भारी काम करते हुए एक मानक सीएलआई एप्लिकेशन बनाने की सुविधा देती है। आपको केवल अपने सीएलआई ऐप के लिए कमांड, विकल्प और कार्यक्षमता को परिभाषित करना होगा।

इसे स्टाइलिंग के लिए चॉक.जेएस जैसे अन्य पैकेजों के साथ जोड़कर, आप जल्दी से नोड.जेएस में एक पूरी तरह कार्यात्मक सीएलआई ऐप बना सकते हैं।

कमांडर.जेएस का उपयोग करके नोड.जेएस में सीएलआई एप्लिकेशन बनाना

एक उदाहरण सीएलआई ऐप पर विचार करें, शहरी-सीएलआई, जो शब्दों के अर्थ और सोशल मीडिया संक्षिप्ताक्षरों को देखता है शहरी शब्दकोश. आप सीखेंगे कि सीएलआई कैसे बनाएं और इसे कैसे प्रकाशित करें NPM पैकेज रजिस्ट्री ताकि अन्य लोग इसे इंस्टॉल कर सकें।

एक नया फ़ोल्डर बनाएं और निम्नलिखित कमांड के साथ एक नया Node.js प्रोजेक्ट प्रारंभ करें:

mkdir urbanary-cli
cd urbanary-cli
npm init -y

यह सीएलआई उपयोग करेगा HTTP अनुरोध भेजने के लिए Axios अर्बन डिक्शनरी एपीआई के लिए। आप उपयोग कर सकते हैं रैपिड एपीआई अंतिम बिंदुओं की जांच करने और क्रेडेंशियल देखने के लिए।

उपकमांड और सहायता के साथ एक सरल सीएलआई

अपने सीएलआई का निर्माण शुरू करने के लिए, निम्नलिखित कमांड के साथ कमांडर और एक्सियोस स्थापित करें:

npm install commander axios

एक नया फ़ोल्डर बनाएं, बिन, आपकी प्रोजेक्ट निर्देशिका में और एक नई खाली फ़ाइल, सूचकांक.जे.एस:

mkdir bin
cd bin
touch index.js

बिन ("बाइनरी" के लिए संक्षिप्त) फ़ोल्डर महत्वपूर्ण है क्योंकि इसमें प्रवेश बिंदु फ़ाइल होती है जिसे नोड आपके सीएलआई चलाने पर कॉल करता है। सूचकांक.जे.एस फ़ाइल यह प्रवेश बिंदु फ़ाइल है. अब, Index.js फ़ाइल संपादित करें और कमांडर.js API के साथ अपना CLI बनाना शुरू करें।

सबसे पहले, आयात करें कार्यक्रम कमांडर से वस्तु:

const { program } = require('commander');

आप इसका उपयोग करेंगे कार्यक्रम उप-आदेशों, विकल्पों और तर्कों सहित आपके प्रोग्राम के इंटरफ़ेस को परिभाषित करने के लिए ऑब्जेक्ट। ऑब्जेक्ट में इनमें से प्रत्येक के लिए संबंधित विधियाँ हैं; उदाहरण के लिए, किसी उप-आदेश को परिभाषित करने के लिए, इसका उपयोग करें आज्ञा तरीका।

ए को परिभाषित करें खोजो शहरी शब्दकोश से शब्दों को देखने और नीचे दिए गए कोड का उपयोग करके इसके लिए एक विवरण जोड़ने के लिए सीएलआई के लिए उपकमांड:

// index.js
program
.command('find ')
.description('find meaning of a word or abbreviation or slang')

यह एक रजिस्टर करता है खोजो कमांड, जो इसके बाद एक शब्द और इसके लिए एक विवरण की अपेक्षा करता है। कोण कोष्ठक का उपयोग यह दर्शाता है कि शब्द एक आवश्यक तर्क है; इसके बजाय वर्गाकार कोष्ठक का उपयोग करें ([]) इसे वैकल्पिक बनाने के लिए।

आपको एक विवरण जोड़ना चाहिए क्योंकि कमांडर.जेएस इसका उपयोग सहायता पाठ उत्पन्न करने के लिए करता है। जब आप एप्लिकेशन को इसके साथ चलाते हैं मदद कमांड, आपको एक मानक उपयोग मार्गदर्शिका मिलेगी।

इसका परीक्षण करने के लिए, निम्नलिखित जोड़ें:

program.parse()

फिर प्रोग्राम चलाएं और इसे पास करें मदद नीचे आउटपुट प्राप्त करने के लिए कमांड:

इस प्रकार कोई भी मानक सीएलआई एप्लिकेशन उपयोगकर्ताओं को अपनी सहायता प्रदर्शित करेगा और, कमांडर के साथ, आपको इसे स्वयं बनाने के बारे में चिंता करने की ज़रूरत नहीं है। -एच और --मदद किसी कमांड के उपयोग गाइड की जाँच के लिए विकल्प उपयोगी होते हैं।

विकल्पों को परिभाषित करना और अंतिम कार्यक्रम तैयार करना

आप श्रृंखलाबद्ध करके एक विकल्प भी परिभाषित करते हैं विकल्प कमांड परिभाषा के लिए विधि.

यहां शब्दों की परिभाषाओं में उदाहरण शामिल करने के विकल्प को परिभाषित करने का तरीका बताया गया है:

program.option('-e, --example', "Display examples")

और यहां बताया गया है कि वापस आने वाली परिभाषाओं की संख्या निर्दिष्ट करते हुए किसी विकल्प को कैसे परिभाषित किया जाए:

program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)

विकल्प विधि दो स्ट्रिंग पैरामीटर स्वीकार करती है, एक विकल्प के नाम के लिए (छोटे और लंबे दोनों रूप), और दूसरा इसके विवरण के लिए। अतिरिक्त [मात्रा] में तर्क गिनती करना विकल्प प्रदर्शित की जाने वाली परिभाषाओं की संख्या का मान है।

अब, जोड़ने की आखिरी विधि है कार्रवाई तरीका। आप इसे क्रियान्वित करेंगे खोजो इस पद्धति के अंतर्गत कमांड की कार्यक्षमता। इसे श्रृंखला में जोड़ें ताकि आपका कोड अब इस तरह दिखे:

program
.command('find ')
.description('find meaning of a word or abbreviation or slang')
.option('-e, --example', "Display examples")
.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
.action(async (word, options) => {});

इस सेटअप के साथ, यहां किस कमांड की तीन परिभाषाएँ प्राप्त की जा सकती हैं ज़ोर-ज़ोर से हंसना उदाहरणों के साथ ऐसा दिखेगा:

urbanary-cli find lol -e -c 3

या, प्रत्येक विकल्प के लंबे रूप का उपयोग करके:

urbanary-cli find lol --example --count 3

चेक आउट कमांडर का एनपीएम पेज इसके बारे में अधिक जानने के लिए और अपने विभिन्न उपयोग के मामलों के लिए इसके कार्यों को कैसे अनुकूलित करें।

कार्यक्रम की कार्यक्षमता को लागू करना

सबसे पहले, Axios को अपने में आयात करें सूचकांक.जे.एस फ़ाइल इस प्रकार है:

const axios = require('axios');

फिर, के कार्य निकाय में कार्रवाईके पैरामीटर के आधार पर, आप अर्बन डिक्शनरी में अनुरोध करने और अपने विकल्पों के अनुसार परिणाम प्रदर्शित करने के लिए तर्क लागू कर सकते हैं।

अपने अनुरोध को परिभाषित करके प्रारंभ करें:

let requestOptions = {
method: 'GET',
URL: "https://mashape-community-urban-dictionary.p.rapidapi.com/define",
params: { term: word },
headers: {
'X-RapidAPI-Key': YOUR_RAPID_API_KEY,
'X-RapidAPI-Host': 'mashape-community-urban-dictionary.p.rapidapi.com'
}
}

फिर निम्नलिखित कोड के साथ एक्सियोस का उपयोग करके एपीआई के लिए अनुरोध करें:

try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}

प्रतिक्रिया डेटा से आपको जिस एकमात्र संपत्ति की आवश्यकता है वह है सूची संपत्ति जिसमें परिभाषाएँ और उदाहरण हैं।

अभी भी में कोशिश ब्लॉक करें, विकल्पों को संभालने के लिए इस तर्क को जोड़ें और परिणाम निम्नानुसार प्रदर्शित करें:

if (options.example && options.count) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);

definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
console.log(`Example:\n${elem.example}\n`);
});
} elseif (options.count && !options.example) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);

definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
});
} elseif (options.example) {
console.log(`Definition: ${wordData[0].definition}`);
console.log(`Example:\n${wordData[0].example}`);
} else {
console.log(`Definition: ${wordData[0].definition}`);
}

यह कोड आउटपुट को प्रदर्शित करने का तरीका निर्धारित करने के लिए if-else स्टेटमेंट का उपयोग करके कमांड तर्कों का मूल्यांकन करता है। यदि उदाहरण और गिनती करना विकल्प पारित हो जाते हैं, यह पुनरावृत्त होता है वर्डडेटा और उनके साथ निर्दिष्ट संख्या में परिभाषाएँ और उदाहरण प्रिंट करता है।

यदि आप केवल पास हो जाते हैं गिनती करना, यह उदाहरणों के बिना परिभाषाओं की उस मात्रा को प्रदर्शित करता है। यदि आप केवल पास हो जाते हैं उदाहरण, यह एक उदाहरण वाक्य के साथ एक परिभाषा प्रदर्शित करता है। अन्य यदि आप कोई विकल्प पास नहीं करते हैं तो केवल परिभाषा को प्रिंट करने के लिए स्टेटमेंट डिफ़ॉल्ट व्यवहार है।

एप्लिकेशन अब तैयार है, इसलिए अगला कदम इसे निष्पादन योग्य बनाना है। जोड़कर प्रारंभ करें एक शेबंग लाइन अपनी बिन/इंडेक्स.जेएस फ़ाइल की शुरुआत में ताकि आप इसे एक स्टैंडअलोन स्क्रिप्ट के रूप में चला सकें:

#!/usr/bin/env node

इसके बाद, अपना खोलें package.json फ़ाइल, का मान संपादित करें मुख्य संपत्ति, और एक जोड़ें बिन इसके बाद संपत्ति इस प्रकार है:

"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},

कुंजी शहरी-सीएलआई, अंतर्गत बिन यह वह कमांड है जिसे आप अपने एप्लिकेशन को चलाने के लिए अपने टर्मिनल में दर्ज करेंगे। इसलिए, अपने कमांड लाइन एप्लिकेशन बनाते समय वहां उपयुक्त नाम का उपयोग करना सुनिश्चित करें।

दौड़ना एनपीएम इंस्टाल -जी एप्लिकेशन को विश्व स्तर पर इंस्टॉल करने के लिए, और आप एप्लिकेशन को अपने टर्मिनल से कमांड के रूप में निष्पादित करने में सक्षम होंगे।

नीचे दी गई छवि इंस्टॉलेशन प्रक्रिया और इसका अर्थ जानने के लिए एक परीक्षण कमांड दिखाती है एलएमके:

आप इसे चलाकर npm पैकेज रजिस्ट्री पर भी प्रकाशित कर सकते हैं एनपीएम प्रकाशित प्रोजेक्ट निर्देशिका के भीतर टर्मिनल में। यह इसे कहीं से भी उपयोग करने वाले किसी भी व्यक्ति द्वारा इंस्टॉल करने योग्य बनाता है एनपीएम इंस्टाल.

Node.js के साथ अपना एप्लिकेशन बनाना और प्रकाशित करना आपकी तुलना में आसान है रस्ट जैसी प्रौद्योगिकियों के साथ सीएलआई बनाएं.

Node.js के साथ कार्यात्मक सीएलआई एप्लिकेशन बनाएं

चाहे आप एनपीएम पैकेज पर काम कर रहे हों और इसके साथ सीएलआई उपयोगिता की आवश्यकता हो, या आप डेवलपर के रूप में अपने वर्कफ़्लो को बेहतर बनाने के लिए एक टूल बनाना चाहते हों। आपके पास Node.js कमांडर पैकेज के साथ अपने विचार को जीवन में लाने के लिए आवश्यक सभी चीजें हैं।

आप अपने अनुप्रयोगों के लिए बेहतर सीएलआई अनुभव बनाने के लिए अन्य पुस्तकालयों का उपयोग करके भी आगे बढ़ सकते हैं, Node.js बिना किसी परेशानी के आपके उद्देश्यों को पूरा करने के लिए पर्याप्त मजबूत है।