गो में निर्भरता प्रबंधन का परिचय
निर्भरता प्रबंधन किसी भी सॉफ्टवेयर प्रोजेक्ट का एक महत्वपूर्ण पहलू है, क्योंकि यह पुस्तकालयों के संस्करणों और आपके प्रोजेक्ट पर निर्भर पैकेजों को प्रबंधित करने में मदद करता है। गो (गोलंग) में, निर्भरता प्रबंधन यह सुनिश्चित करता है कि आपकी गो परियोजनाएं पुनरुत्पादित और रखरखाव योग्य हैं, जिससे वर्जनिंग मुद्दों को हल करना आसान हो जाता है, अन्य पैकेजों के साथ संगतता बनाए रखता है और समग्र विकास प्रक्रिया को कारगर बनाता है।
गो मॉड्यूल से पहले, गो में निर्भरता प्रबंधन कम सुव्यवस्थित था। डेवलपर्स अक्सर अपनी निर्भरताओं को प्रबंधित करने के लिए dep , glide , या govendor जैसे टूल का उपयोग करते हैं। जबकि ये उपकरण सहायक थे, वे आधिकारिक गो परियोजना का हिस्सा नहीं थे और इस प्रकार, कुछ डेवलपर्स के लिए गो को एक भाषा के रूप में अपनाने में घर्षण पैदा किया।
गो मॉड्यूल का युग
2018 में, गो टीम ने "मॉड्यूल" की अवधारणा पेश की, जो गो परियोजनाओं में निर्भरता प्रबंधन के लिए एक नया मानक है। मॉड्यूल संबंधित पैकेजों के संग्रह हैं जो एक साथ संस्करणित होते हैं, जो आपके कोडबेस के लिए सभी आवश्यक निर्भरताएँ प्रदान करते हैं। गो 1.11 में गो मॉड्यूल की शुरुआत के साथ, निर्भरता प्रबंधन सरल, अधिक बहुमुखी और गो प्रोजेक्ट द्वारा आधिकारिक रूप से समर्थित हो गया। गो मॉड्यूल ने पेश की विशेषताएं जैसे:
- सिमेंटिक वर्जनिंग (SemVer) का उपयोग करके निर्भरता संस्करण
- सरलीकृत निर्भरता प्रबंधन आदेश (उदाहरण के लिए
go get,go mod tidy) - डिपेंडेंसी की विस्तृत जानकारी वाली मेनिफेस्ट फ़ाइल (
go.mod) का ऑटो-जेनरेशन - स्वचालित डाउनलोड और आवश्यक निर्भरताओं का कैशिंग
गो मॉड्यूल के साथ, अब आपको अपना कोड $GOPATH निर्देशिका में रखने की आवश्यकता नहीं है, जो पहले गो विकास में एक बाधा थी। यह नई प्रणाली अधिक लचीली परियोजना संरचना को सक्षम करती है, जिससे विभिन्न रिपॉजिटरी के बीच स्विच करने पर गो प्रोजेक्ट पर काम करना आसान हो जाता है।
अपना गो मॉड्यूल प्रोजेक्ट सेट करना
गो मॉड्यूल के साथ शुरुआत करना सीधा है। नया गो मॉड्यूल प्रोजेक्ट सेट करने के लिए नीचे दिए गए चरणों का पालन करें।
- सबसे पहले, सुनिश्चित करें कि आपने अपने सिस्टम पर गो संस्करण 1.11 या बाद का संस्करण स्थापित किया है। आप टर्मिनल में गो
go versionचलाकर अपना गो संस्करण देख सकते हैं। - अपने वांछित स्थान पर जाएं और एक वर्णनात्मक नाम के साथ एक नया प्रोजेक्ट फ़ोल्डर बनाएं, उदाहरण के लिए
my-go-project। - कमांड लाइन में नव निर्मित फ़ोल्डर पर नेविगेट करें।
- मॉड्यूल पथ के बाद
go mod initकमांड चलाकर एक नया गो मॉड्यूल प्रारंभ करें। उदाहरण के लिए, यदि आप GitHub पर प्रोजेक्ट होस्ट करना चाहते हैं, तो आपgo mod init github.com/your-username/my-go-projectचला सकते हैं। यह आदेश आपके प्रोजेक्ट फ़ोल्डर मेंgo.modनामक एक नई फ़ाइल बनाता है।
go.mod फ़ाइल आपके गो मॉड्यूल प्रोजेक्ट का दिल है। इसमें मॉड्यूल के बारे में मेटाडेटा शामिल है, जैसे कि इसका नाम, और इसके लिए आवश्यक सभी निर्भरताओं को सूचीबद्ध करता है। आप अपनी निर्भरताओं को प्रबंधित करने के लिए अपने गो प्रोजेक्ट के जीवनचक्र में go.mod फ़ाइल के साथ इंटरैक्ट करेंगे। अब जब आपका गो मॉड्यूल प्रोजेक्ट स्थापित हो गया है, तो आप गो मॉड्यूल सिस्टम का उपयोग करके निर्भरताओं को जोड़ना और प्रबंधित करना शुरू करने के लिए तैयार हैं।
गो मॉड्यूल के भीतर निर्भरता प्रबंधन
गो मॉड्यूल आपके प्रोजेक्ट की निर्भरता को प्रबंधित करने के लिए एक सीधा और प्रभावी तरीका प्रदान करता है। यह आपको विशिष्ट निर्भरता संस्करणों को जोड़ने, अपडेट करने या हटाने की अनुमति देता है, जिससे आपको अपने प्रोजेक्ट और अन्य पैकेजों के साथ इसके इंटरैक्शन पर नियंत्रण बनाए रखने में मदद मिलती है। यह खंड आपके गो मॉड्यूल प्रोजेक्ट के भीतर निर्भरता के प्रबंधन की प्रक्रिया के माध्यम से आपका मार्गदर्शन करेगा।
एक निर्भरता जोड़ना
एक नई निर्भरता जोड़ने के लिए, आपको केवल अपने गो कोड में वांछित पैकेज आयात करना है। उदाहरण के लिए, यदि आप अपने प्रोजेक्ट में github.com/gorilla/mux जोड़ना चाहते हैं, तो इसे इस तरह आयात करें:
आयात ( "github.com/gorilla/mux" )
अगली बार जब आप go build या go test चलाते हैं, तो गो स्वचालित रूप से आवश्यक पैकेज डाउनलोड करेगा, go.mod और go.sum फ़ाइलों को अपडेट करेगा, और आपके प्रोजेक्ट को निर्दिष्ट पैकेज का उपयोग करने के लिए कॉन्फ़िगर करेगा। वैकल्पिक रूप से, आप नई निर्भरता को स्पष्ट रूप से जोड़ने के लिए go get कमांड का उपयोग कर सकते हैं:
github.com/gorilla/mux पर जाएं
यह न केवल पैकेज प्राप्त करेगा बल्कि आपके प्रोजेक्ट की go.mod और go.sum फ़ाइलों को भी अपडेट करेगा।
एक निर्भरता अद्यतन कर रहा है
एक नए संस्करण के लिए एक विशिष्ट निर्भरता को अद्यतन करने के लिए, पैकेज आयात पथ और वांछित संस्करण संख्या के बाद go get कमांड का उपयोग करें:
जाओ github.com/gorilla/[email protected] प्राप्त करें
यह आदेश go.mod फ़ाइल को पैकेज के नए संस्करण के साथ अद्यतन करेगा और इसके स्रोत कोड को डाउनलोड करेगा। ध्यान दें कि यदि अद्यतन पैकेज ब्रेकिंग परिवर्तन प्रस्तुत करता है, तो आपको तदनुसार अपना कोड समायोजित करने की आवश्यकता हो सकती है।
एक निर्भरता को हटाना
अपने प्रोजेक्ट से एक डिपेंडेंसी को हटाने के लिए, सबसे पहले, अपने सोर्स कोड से संबंधित इंपोर्ट स्टेटमेंट को डिलीट करें। बाद में, go.mod फ़ाइल को साफ़ करने के लिए go mod tidy कमांड चलाएँ:
साफ सुथरा हो जाओ
यह आदेश go.mod फ़ाइल से किसी भी अप्रयुक्त निर्भरता को हटा देगा और यह सुनिश्चित करेगा कि आपकी परियोजना साफ और व्यवस्थित बनी रहे।
सिमेंटिक वर्जनिंग और गो मॉड्यूल
सिमेंटिक वर्जनिंग (SemVer) एक व्यापक रूप से अपनाया गया वर्जनिंग सिस्टम है जो सॉफ्टवेयर रिलीज के लिए अद्वितीय वर्जन नंबर प्रदान करता है। यह तीन-भाग क्रमांकन प्रारूप का उपयोग करता है: Major.Minor.Patch (उदा., 1.2.3)। सेमवर में:
- प्रमुख संस्करण परिवर्तन परिवर्तन को तोड़ने का संकेत देते हैं और मैन्युअल कोड समायोजन की आवश्यकता होती है।
- छोटे संस्करण परिवर्तन पिछड़े-संगत रहते हुए नई सुविधाएँ पेश करते हैं।
- पैच संस्करण परिवर्तनों में बग फिक्स और मामूली प्रदर्शन सुधार शामिल हैं, जो पिछड़े-संगत भी हैं।
गो मॉड्यूल निर्भरता वर्जनिंग को संभालने के लिए सिमेंटिक वर्जनिंग को शामिल करता है, जिससे डेवलपर्स अपडेट, बैकवर्ड कम्पैटिबिलिटी और ब्रेकिंग परिवर्तनों को आसानी से प्रबंधित कर सकते हैं। गो मॉड्यूल के साथ निर्भरता संस्करण निर्दिष्ट करते समय, आप संस्करण श्रेणी या विशिष्ट संस्करण संख्याओं का उपयोग कर सकते हैं। उदाहरण के लिए: - पैकेज के नवीनतम स्थिर संस्करण को लाने के लिए, संस्करण संख्या के बिना पैकेज आयात पथ का उपयोग करें: go get github.com/gorilla/mux । - एक विशिष्ट संस्करण प्राप्त करने के लिए, @ प्रतीक के बाद संस्करण संख्या जोड़ें: go get github.com/gorilla/[email protected] । - एक विशिष्ट प्रमुख संस्करण के भीतर नवीनतम माइनर या पैच अपडेट लाने के लिए, ^ (कैरेट) प्रतीक का उपयोग करें: go get github.com/gorilla/mux@^v1.0.0 ।
कॉमन गो मॉड्यूल कमांड और उनके उपयोग
यहाँ कुछ सबसे अधिक उपयोग किए जाने वाले गो मॉड्यूल कमांड और उनके उपयोग परिदृश्य हैं:
गो मॉड इनिट
go mod init वर्तमान निर्देशिका के भीतर एक नया गो मॉड्यूल प्रोजेक्ट शुरू करता है। यह एक go.mod फ़ाइल उत्पन्न करता है, जिसमें मॉड्यूल, इसकी निर्भरता और संस्करण बाधाओं के बारे में जानकारी होती है।
mod init example.com/myproject पर जाएं
example.com/myproject अपने मॉड्यूल के पथ से बदलें।
मिल जाना
go get एक बहुमुखी कमांड है जिसका उपयोग किसी निर्भरता को जोड़ने, अपडेट करने या हटाने के लिए किया जाता है। पैकेज आयात पथ प्रदान करें, वैकल्पिक रूप से एक संस्करण संख्या या श्रेणी के बाद।
जाओ github.com/gorilla/[email protected] प्राप्त करें
यह कमांड github.com/gorilla/mux पैकेज को संस्करण v1.8.0 में जोड़ता या अपडेट करता है।
साफ सुथरा हो जाओ
go mod tidy go.mod फ़ाइल से अप्रयुक्त निर्भरताओं को हटा देता है और आपके प्रोजेक्ट के स्रोत कोड में आयात विवरणों को प्रतिबिंबित करने के लिए इसे अपडेट करता है।
साफ सुथरा हो जाओ
अवांछित निर्भरताओं के लिए आयात विवरण निकालने के बाद यह कमांड चलाएँ।
मॉड ग्राफ जाओ
go mod graph प्रोजेक्ट के डिपेंडेंसी ट्री को प्रदर्शित करता है, प्रत्यक्ष और अप्रत्यक्ष दोनों तरह की निर्भरता को एक पठनीय प्रारूप में दिखाता है। जटिल निर्भरता मुद्दों को डीबग करते समय यह आदेश सहायक हो सकता है।
मॉड ग्राफ जाओ
जाओ मॉड सत्यापित करें
go mod verify go.sum फ़ाइल में सूचीबद्ध निर्भरताओं की अखंडता की जाँच करता है। यदि किसी डिपेंडेंसी का चेकसम रिकॉर्ड किए गए मान से मेल नहीं खाता है, तो कमांड एक एरर रिपोर्ट करेगा।
जाओ मॉड सत्यापित करें
निर्भरता संघर्षों को हल करना
निर्भरता विवाद तब उत्पन्न हो सकता है जब आपकी परियोजना साझा निर्भरताओं के लिए अलग-अलग संस्करण आवश्यकताओं के साथ कई पैकेजों पर निर्भर करती है। गो मॉड्यूल इन विरोधों को संभालने के लिए एक अंतर्निहित तंत्र प्रदान करता है जो go.mod फ़ाइल में निर्देशों को replace और exclude का उपयोग करता है।
बदलें निर्देश
replace निर्देश आपको मॉड्यूल के संस्करण को एक अलग संस्करण में बदलने या इसे स्थानीय पथ पर मैप करने की अनुमति देता है। यह उन स्थितियों में उपयोगी हो सकता है जहां आपको दूरस्थ रिपॉजिटरी में जाने से पहले विशिष्ट संस्करणों, फोर्क्ड परियोजनाओं या स्थानीय परिवर्तनों का परीक्षण करने की आवश्यकता होती है। बदलें निर्देश का उपयोग करने के लिए, निम्न पंक्ति को अपनी go.mod फ़ाइल में जोड़ें:
example.com/origin/module v1.2.3 => example.com/new/module v1.4.0 को बदलें
यह example.com/original/module /मॉड्यूल संस्करण v1.2.3 को example.com/new/module संस्करण v1.4.0 से बदल देता है। आप मॉड्यूल को स्थानीय पथ से भी बदल सकते हैं:
example.com/original/module v1.2.3 => ../local/path/to/new/module को बदलें
बहिष्कृत निर्देश
आप किसी मॉड्यूल के विशिष्ट संस्करणों को अपने प्रोजेक्ट में उपयोग होने से रोकने के लिए exclude निर्देश का उपयोग कर सकते हैं। यह तब उपयोगी होता है जब आप जानते हैं कि किसी विशेष संस्करण में संगतता समस्याएँ या सुरक्षा भेद्यताएँ हैं। मॉड्यूल संस्करण को बाहर करने के लिए, निम्न पंक्ति को अपनी go.mod फ़ाइल में जोड़ें:
example.com/target/module v1.2.3 को बाहर करें
go.sum फ़ाइल को अपडेट करने और डिपेंडेंसी ट्री की पुनर्गणना करने के लिए इन परिवर्तनों को लागू करने के बाद go mod tidy को चलाना याद रखें।
निजी गो मॉड्यूल और रिपॉजिटरी प्रबंधन
निजी गो मॉड्यूल और रिपॉजिटरी के साथ काम करना सार्वजनिक के साथ काम करने के समान है, लेकिन उचित प्रमाणीकरण और गोपनीयता सुनिश्चित करने के लिए कुछ अतिरिक्त कदम हैं।
GOPRIVATE को कॉन्फ़िगर करना
सार्वजनिक सर्वर पर आयात पथ को लीक होने से रोकने के लिए, GOPRIVATE पर्यावरण चर को कॉन्फ़िगर करें। यह चर निजी रिपॉजिटरी के लिए आयात पथ पैटर्न की अल्पविराम से अलग की गई सूची को निर्दिष्ट करता है।
env -w GOPRIVATE=example.com/private/path/* पर जाएं
एक्सेस टोकन का उपयोग करना
निजी रिपॉजिटरी का उपयोग करने के लिए, आपको आमतौर पर अपने स्रोत कोड होस्टिंग सेवा, जैसे कि GitHub या GitLab के साथ प्रमाणित करने की आवश्यकता होती है। उपयुक्त अनुमतियों के साथ एक व्यक्तिगत एक्सेस टोकन बनाएं (जैसे कि GitHub के लिए repo स्कोप)। एक्सेस टोकन बनाने के विशिष्ट चरणों के लिए अपनी होस्टिंग सेवा के दस्तावेज़ देखें। एक्सेस टोकन प्राप्त करने के बाद, प्रमाणीकरण के लिए पर्यावरण चर को कॉन्फ़िगर करें। अपनी वीसीएस सेवा के आधार पर उचित पर्यावरण चर का प्रयोग करें।
निर्यात GIT_TERMINAL_PROMPT=0 निर्यात GITHUB_TOKEN=YOUR_ACCESS_TOKEN
यह go कमांड को निजी रिपॉजिटरी को गो मॉड्यूल के रूप में डाउनलोड और प्रमाणित करने की अनुमति देता है। यदि आप कई वीसीएस सेवाओं के साथ काम करते हैं, तो आप आवश्यकतानुसार अलग-अलग पर्यावरण चर परिभाषित करके प्रत्येक के लिए अलग-अलग एक्सेस टोकन कॉन्फ़िगर कर सकते हैं।
पिछले डिपेंडेंसी मैनेजमेंट सिस्टम से माइग्रेट करना
गो मॉड्यूल से पहले, डिप, ग्लाइड या कस्टम विक्रेता निर्देशिका समाधान जैसे विभिन्न निर्भरता प्रबंधन प्रणालियां थीं। यदि आप अभी भी इन प्रणालियों का उपयोग कर रहे हैं, तो वर्तमान रहने और आधुनिक गोलांग निर्भरता प्रबंधन के लाभों को प्राप्त करने के लिए गो मॉड्यूल में माइग्रेट करने का समय आ गया है। पिछली निर्भरता प्रबंधन प्रणाली से गो मॉड्यूल में माइग्रेट करने के लिए, इन चरणों का पालन करें:
- यह सुनिश्चित करने के लिए कि यदि आवश्यक हो तो आप पिछली स्थिति में वापस आ सकते हैं, अपनी मूल परियोजना का बैकअप बनाएँ।
- किसी भी मौजूदा निर्भरता प्रबंधन फ़ाइल को हटा दें (जैसे,
Gopkg.tomlयाGopkg.lock)। - टर्मिनल में अपने प्रोजेक्ट के रूट पर नेविगेट करें, और एक नई
go.modफ़ाइल बनाने के लिएgo mod initचलाएँ। यह आपकी पिछली निर्भरता फ़ाइल, यदि मौजूद है, को गो मॉड्यूल प्रविष्टियों में बदलने का भी प्रयास करेगा। - अपने पिछले सिस्टम से निर्भरता के साथ
go.modफ़ाइल को पॉप्युलेट करने के लिएgo mod tidyचलाएं। यह कमांड सुनिश्चित करता है कि केवल आवश्यक पैकेज ही डिपेंडेंसी ट्री का हिस्सा हैं। - इस बिंदु पर, आपको निर्भरता विवादों को हल करने या विशिष्ट संस्करणों को लागू करने के लिए अपनी
go.modफ़ाइल में समायोजन करने की आवश्यकता हो सकती है। इन मुद्दों को संभालने के लिए आवश्यकतानुसारreplaceऔरexcludeनिर्देशों का उपयोग करें। - सत्यापित करें कि आपका प्रोजेक्ट अभी भी अपेक्षित रूप से परीक्षण बनाता है और पास करता है।
इन चरणों का पालन करके, आपकी परियोजना को अब गो मॉड्यूल के साथ काम करना चाहिए, निर्भरता प्रबंधन को सुव्यवस्थित करना और लंबे समय में इसे और अधिक बनाए रखना चाहिए। किसी भी लंबित समस्या को go.mod फ़ाइल को समायोजित करके या अपने आयात पथों की जांच करके यह सुनिश्चित करने के लिए हल किया जाना चाहिए कि वे सही प्रारूप का पालन करते हैं।
AppMaster: गोलंग-आधारित अनुप्रयोग विकास में तेजी लाना
गो मॉड्यूल और निर्भरता प्रबंधन सर्वोत्तम प्रथाओं को अपने दैनिक वर्कफ़्लो में शामिल करना एक बनाए रखने योग्य और स्केलेबल गोलंग-आधारित सॉफ़्टवेयर प्रोजेक्ट सुनिश्चित करने के लिए महत्वपूर्ण है। लेकिन क्या होगा यदि आप गोलंग की शक्ति का लाभ उठाते हुए संपूर्ण अनुप्रयोग विकास प्रक्रिया को गति दे सकें?
AppMaster.io में प्रवेश करें, एक व्यापक नो-कोड प्लेटफ़ॉर्म जिसमें दृश्य विकास वातावरण का उपयोग करके गोलंग-आधारित बैकएंड एप्लिकेशन उत्पन्न करने पर जोर दिया गया है। बैकएंड एप्लिकेशन के अलावा, AppMaster विकास प्रक्रिया को सुव्यवस्थित करने के लिए डिज़ाइन किए गए एकीकृत दृष्टिकोण का उपयोग करके वेब और मोबाइल एप्लिकेशन के निर्माण की अनुमति देता है।
AppMaster के साथ, उपयोगकर्ता डेटा मॉडल (डेटाबेस स्कीमा) बना सकते हैं, व्यावसायिक प्रक्रियाओं को डिज़ाइन कर सकते हैं और एक दृश्य UI के माध्यम से REST API और WebSocket endpoints परिभाषित कर सकते हैं। पूरी तरह से इंटरैक्टिव उपयोगकर्ता अनुभव के लिए वेब बिजनेस प्रोसेस डिजाइनर के साथ-साथ ड्रैग-एंड-ड्रॉप इंटरफेस का उपयोग करके वेब एप्लिकेशन बनाए जाते हैं। मोबाइल एप्लिकेशन को मोबाइल बिजनेस प्रोसेस डिजाइनर और यूआई डिजाइन क्षमता के साथ समान रूप से डिजाइन किया गया है।
जैसे ही आप 'प्रकाशित करें' बटन दबाते हैं, AppMaster का प्लेटफ़ॉर्म आपके ब्लूप्रिंट ले लेता है और आपके एप्लिकेशन के लिए स्रोत कोड उत्पन्न कर देता है। यह अनुप्रयोगों को संकलित करता है, परीक्षण चलाता है, उन्हें डॉकर कंटेनरों (बैकएंड अनुप्रयोगों के लिए) में पैक करता है, और कुछ ही सेकंड में सब कुछ क्लाउड पर तैनात कर देता है।
गोलंग (गो) का उपयोग करके बैकएंड एप्लिकेशन उत्पन्न किए जाते हैं, जो गोलंग के प्रदर्शन, सरलता और रख-रखाव से लाभान्वित होते हैं। वेब एप्लिकेशन Vue3 फ्रेमवर्क और जावास्क्रिप्ट / टाइपस्क्रिप्ट का उपयोग करके उत्पन्न होते हैं, जबकि मोबाइल एप्लिकेशन AppMaster सर्वर-संचालित फ्रेमवर्क, Android के लिए कोटलिन और Jetpack Compose और iOS अनुप्रयोगों के लिए SwiftUI उपयोग करते हैं।
शक्तिशाली AppMaster प्लेटफॉर्म के लिए धन्यवाद, कोडिंग अनुभव के बिना भी एक पूर्ण, स्केलेबल सॉफ़्टवेयर समाधान बना सकते हैं जिसमें सर्वर बैकएंड, वेबसाइट, ग्राहक पोर्टल और देशी मोबाइल एप्लिकेशन शामिल हैं। AppMaster न केवल संपूर्ण सॉफ़्टवेयर विकास प्रक्रिया को गति देता है, बल्कि हर बार आवश्यकताओं को संशोधित करने के लिए स्क्रैच से एप्लिकेशन उत्पन्न करके तकनीकी ऋण को पूरी तरह से समाप्त कर देता है।
यदि आप अपनी सॉफ़्टवेयर विकास आवश्यकताओं के लिए एक no-code प्लेटफ़ॉर्म अपनाने पर विचार कर रहे हैं, विशेष रूप से वह जो गोलंग के लाभों का लाभ उठाता है, तो AppMaster आपकी सूची में सबसे ऊपर होना चाहिए। एक निःशुल्क खाते के लिए साइन अप करें और एक ऐसे समाधान के साथ अनुप्रयोग विकास के भविष्य का अन्वेषण करें जो 10 गुना तेज़ और 3 गुना अधिक लागत-प्रभावी है।