ग्रंट (सॉफ्टवेयर)

ग्रंट एक जावास्क्रिप्ट टास्क रनर है, एक उपकरण जिसका उपयोग लघुकरण (प्रोग्रामिंग), संकलक, इकाई का परीक्षण और लिंट (सॉफ्टवेयर) जैसे लगातार कार्यों को स्वचालित रूप से करने के लिए किया जाता है। यह फ़ाइल में परिभाषित अनुकूलित कार्यों को चलाने के लिए कमांड लाइन इंटरफेस का उपयोग करता है (जिसे ग्रंटफ़ाइल के रूप में जाना जाता है)। ग्रंट बेन अल्मन द्वारा बनाया गया था और Node.js में लिखा गया है। इसे एनपीएम (सॉफ्टवेयर) के माध्यम से वितरित किया जाता है। अक्टूबर 2022 तक, ग्रंट पारिस्थितिकी प्रणालि में 6,000 से अधिक प्लगइन्स उपलब्ध थे।

ग्रंट का उपयोग करने वाली कंपनियों में एडोब सिस्टम्स, जेक्वेरी, ट्विटर, मोज़िला, बूटस्ट्रैप (फ्रंट-एंड फ्रेमवर्क), क्लाउडेंट, ओपेरा (वेब ​​ब्राउज़र), वर्डप्रेस, वॉल-मार्ट और माइक्रोसॉफ्ट सम्मिलित हैं।

सिंहावलोकन
ग्रंट को मूल रूप से बेन अल्मन द्वारा 2012 में एक विशाल फ़ाइल में जावास्क्रिप्ट निर्माण प्रक्रिया कार्यों के एक सूट को लिखने और बनाए रखने, को सरल बनाने के एक कुशल विकल्प के रूप में बनाया गया था। इसे जावास्क्रिप्ट परियोजनाओं के लिए कार्य-आधारित कमांड-लाइन अंतरापृष्ठ निर्माण उपकरण के रूप में डिज़ाइन किया गया था।

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

कमांड-लाइन अंतरापृष्ठ
ग्रंट का कमांड-लाइन अंतरापृष्ठ (सीएलआई) एनपीएम (सॉफ्टवेयर) के माध्यम से विश्व स्तर पर स्थापित किया जा सकता है।  कमांड को निष्पादित करने से वर्तमान निर्देशिका में स्थानीय रूप से स्थापित ग्रंट का संस्करण लोड होगा और चलेगा। इसलिए, हम अलग-अलग फ़ोल्डरों में ग्रंट के विभिन्न संस्करणों को बनाए रख सकते हैं और प्रत्येक को अपनी इच्छानुसार निष्पादित कर सकते हैं।

फ़ाइलें
किसी प्रोजेक्ट में ग्रंट का उपयोग करने के लिए, रूट निर्देशिका में दो विशिष्ट फ़ाइलें बनाने की आवश्यकता होती है, अर्थात् package.json और एक ग्रंटफ़ाइल।
 * package.json - इसमें नाम, संस्करण, विवरण, लेखक, लाइसेंस और इसकी निर्भरता (प्रोजेक्ट के लिए आवश्यक ग्रंट प्लगइन्स) सहित प्रोजेक्ट के लिए मेटा डेटा सम्मिलित है। सभी निर्भरताएँ या तो  या   अनुभाग में सूचीबद्ध हैं।
 * ग्रंटफ़ाइल - एक वैध जावास्क्रिप्ट या कॉफ़ीस्क्रिप्ट फ़ाइल जिसका नाम "ग्रंटफ़ाइल.जेएस" या "ग्रंटफ़ाइल.कॉफ़ी" है जिसमें कार्यों को कॉन्फ़िगर करने, उपस्थित प्लगइन्स को लोड करने और/या अनुकूलित कार्य बनाने के लिए कोड सम्मिलित है।

कार्य
कार्य (कंप्यूटिंग) वे मॉड्यूल हैं जो निर्दिष्ट कार्य करते हैं। उन्हें ग्रन्टफ़ाइल में परिभाषित किया गया है।

विकासकर्ता उपस्थित ग्रंट प्लगइन्स से पूर्वनिर्धारित कार्यों को लोड कर सकते हैं और/या अपनी आवश्यकताओं के आधार पर अपने कार्यों को परिभाषित करने के लिए अनुकूलित कोड लिख सकते हैं। एक बार परिभाषित होने के बाद, इन कार्यों को केवल  निष्पादित करके कमांड लाइन से चलाया जा सकता है। यदि ग्रंटफ़ाइल में परिभाषित   डिफ़ॉल्ट' है तो केवल   निष्पादित करना पर्याप्त होगा।

उदाहरण
निम्नलिखित जावास्क्रिप्ट में लिखे गए ग्रंटफ़ाइल का एक उदाहरण है जो दिखाता है कि प्लगइन्स कैसे लोड करें, अनुकूलित कार्य बनाएं और उन्हें समनुरूप करें: उपरोक्त उदाहरण में,  कमांड निष्पादित करने से   चलेगा जिसे ऊपर   और    दोनों के संयोजन के रूप में परिभाषित किया गया है।

प्लगइन्स
प्लग-इन (कंप्यूटिंग) पुन: प्रयोज्य कोड हैं जो कार्यों के समुच्चय को परिभाषित करते हैं। प्रत्येक प्लगइन में आंतरिक रूप से जावास्क्रिप्ट फ़ाइलों के साथ एक कार्य निर्देशिका होती है जिसमें ग्रंटफ़ाइल के समान रचनाक्रम होता है। अधिकांश ग्रंट प्लगइन्स को एनपीएम में सूचकांक पद के साथ प्रकाशित किया जाता है और   के साथ उपसर्ग जोड़ा जाता है। यह ग्रंट को ग्रंट की प्लगइन सूची में सभी प्लगइन्स दिखाने में मदद करता है। ग्रंट द्वारा आधिकारिक तौर पर समर्थित प्लगइन्स के साथ  उपसर्ग लगाया गया है और प्लगइन्स सूची में एक स्टार प्रतीक के साथ भी चिह्नित किया गया है। कुछ लोकप्रिय प्लगइन्स में ग्रंट-कॉन्ट्रिब-वॉच, ग्रंट-कॉन्ट्रिब-क्लीन, ग्रंट-कॉन्ट्रिब-uglify     सम्मिलित हैं।

विकासकर्ता  का उपयोग करके अपने स्वयं के ग्रंट प्लगइन्स भी बना सकते हैं और   कमांड (कमान) का उपयोग करके उन्हें एनपीएम पर प्रकाशित कर सकते हैं।

लाभ
ग्रंट का उपयोग करने के कुछ फायदे निम्नलिखित हैं:
 * सभी कार्य धावकों में निम्नलिखित गुण होते हैं: स्थिरता, प्रभावशीलता, दक्षता, दोहराव, आदि।
 * कई पूर्वनिर्धारित प्लगइन्स तक पहुंच जिनका उपयोग जावास्क्रिप्ट कार्यों और स्थिर सामग्री पर काम करने के लिए किया जा सकता है।
 * उपयोगकर्ताओं को पूर्वनिर्धारित प्लगइन्स का उपयोग करके कार्यों को अनुकूलित करने की अनुमति देता है।
 * कोडिंग के लिए समाकृतिकता दृष्टिकोण को प्राथमिकता देता है।
 * उपयोगकर्ताओं को अपने स्वयं के प्लगइन्स जोड़ने और उन्हें एनपीएम (सॉफ्टवेयर) पर प्रकाशित करने की अनुमति देता है।

एंट
एंट या अपाचे एंट एक जावा (प्रोग्रामिंग भाषा)- आधारित निर्माण उपकरण है। एंट के पास सौ से अधिक अंतर्निहित कार्य हैं जो जावा विकसित संरचना वाली परियोजनाओं के लिए बेहतर अनुकूल हैं। एंट में अनुकूलित कोड लिखने के लिए उपयोगकर्ताओं को JAR (फ़ाइल प्रारूप) फ़ाइल लिखने और इसे XML से संदर्भित करने की आवश्यकता होती है। इससे उन परियोजनाओं में अनावश्यक जटिलताएँ बढ़ जाएंगी जिनमें स्वयं जावा की आवश्यकता नहीं है। एंट विकसित समाकृतिकता JSON प्रारूप के बजाय XML में सूचीबद्ध हैं।

रेक
रेक (सॉफ्टवेयर) विकासकर्ता को रूबी (प्रोग्रामिंग भाषा) में कार्यों को परिभाषित करने की अनुमति देता है। रेक में प्लगइन्स या पूर्वनिर्धारित कार्यों की अवधारणा नहीं है जिसका अर्थ है कि सभी आवश्यक क्रियाएं लिखी जानी चाहिए और फिर निष्पादित की जानी चाहिए। यह ग्रंट की तुलना में विकास को महंगा बनाता है जिसमें पुन: प्रयोज्य प्लगइन्स का एक बड़ा समुच्चय है।

गल्प
गुलप.जेएस ग्रंट के समान जावास्क्रिप्ट आधारित कार्य धावक उपकरण है क्योंकि दोनों प्रतिरूपक-आधारित वास्तुकला का पालन करते हैं और एनपीएम (सॉफ्टवेयर) पर आधारित हैं। गल्प कार्यों को समाकृतिकता के बजाय कोड द्वारा परिभाषित किया जाता है। गल्प ग्रंट से तेज़ है। ग्रंट आउटपुट को एक कार्य से दूसरे कार्य में स्थानांतरित करने के लिए अस्थायी फ़ाइलों का उपयोग करता है जबकि गल्प फ़ाइलें कार्यों के बीच पाइपलाइन (कंप्यूटिंग) होती हैं।

यह भी देखें
विकसित ऑटोमेशन सॉफ़्टवेयर की सूची सूची
 * नोड.जे.एस
 * एनपीएम (सॉफ्टवेयर)
 * स्वचालन बनाएँ
 * अपाचे मावेन
 * रेक (सॉफ्टवेयर)
 * येओमन (कंप्यूटिंग)
 * आधुनिकीकरणकर्ता
 * जावास्क्रिप्ट ढांचा
 * जावास्क्रिप्ट ढाँचा