अध्याय 1: लाइव रिलोडिंग का परिचय
लाइव रिलोडिंग क्या है?
लाइव रिलोडिंग एक ऐसी सुविधा है जो आपके विकास पर्यावरण को आपके कोड में परिवर्तनों का निगरानी रखने और स्वचालित रूप से आपके एप्लिकेशन को पुनरारंभित करने की सुविधा प्रदान करता है। जब आप एक फ़ाइल सहेजते हैं, तो लाइव रिलोडिंग टूल परिवर्तन का पता लगाता है, एप्लिकेशन को पुनः निर्माण करता है, और इसे पुनः प्रारंभ करता है। यह आपको हर परिवर्तन के बाद सर्वर को रोकने, एप्लिकेशन को पुनः निर्माण करने, और फिर से प्रारंभ करने की मैनुअल प्रक्रिया से बचाता है।
गो डेवलपमेंट के लिए लाइव रिलोडिंग के लाभ
लाइव रिलोडिंग विकास प्रक्रिया को काफी तेज़ कर सकता है। गो डेवलपर्स के लिए, जो अपने कोड को कंपाइल करने से पहले रन करने का अभ्यास करते हैं, लाइव रिलोडिंग का मतलब है कि उनकी प्रक्रिया में सुधार होता है और तुरंत प्रतिक्रिया मिलती है। इसके लाभ निम्नलिखित हैं:
- उत्पादकता में वृद्धि: विकासक बिना अवरोध के ध्यान में रह सकते हैं, क्योंकि उन्हें मैन्युअल निर्माण करने की आवश्यकता नहीं होती है।
- समय की बचत: लाइव रिलोडिंग से कोड में की गई परिवर्तनों को चल रहे एप्लिकेशन में देखने का समय कम हो जाता है।
- त्रुटि का पता लगाना: तुरंत निर्माण और पुनरारंभ से डेवलपर्स को त्रुटियों का पता लगाने और सुधारने की सुविधा मिलती है।
- सरलीकृत वर्कफ़्लो: विकास प्रक्रिया में सहजता और अधिक दक्षता डालता है।
अध्याय 2: एयर है क्या?
एयर एक कमांड-लाइन उपयोगी उपकरण है जो गो एप्लिकेशनों के लिए लाइव रिलोडिंग की सुविधा प्रदान करने के लिए डिज़ाइन किया गया है। यह आपके स्रोत कोड में परिवर्तनों का निगरानी रखता है और स्वचालित रूप से आपके गो एप्लिकेशन को पुनः निर्माण और पुनः प्रारंभ करता है। इसका मतलब है कि आप अधिक फ़ीचर्स विकसित करने पर और और अधिक पुनरावृत्ति करने के लिए अधिक ध्यान केंद्रित कर सकते हैं, कम अधिकारिक कार्यों पर।
विशेषताएँ
एयर एक रेंज की विशेषताएँ प्रदान करता है जो एक समृद्ध गो विकास पर्यावरण के लिए उपयुक्त है:
- स्वचालित निर्माण: फ़ाइल परिवर्तनों का पता लगाता है और निर्माण को प्रेरित करता है।
- कस्टमाइज़ेबल निर्माण कमांड्स: आपको अपनी प्रोजेक्ट की आवश्यकताओं के लिए निर्माण कमांड्स कस्टमाइज़े करने की अनुमति देता है।
- निगरानी से छूट: आपको निगरानी से बाहर रखने के लिए निर्दिष्ट निर्देशिकाएँ देता है।
- नए निर्देशिकाओं के लिए समर्थन: एयर के प्रारंभ होने के बाद जोड़ी गई नई निर्देशिकाओं को देख सकता है।
- रंगीन और समझने में आसान लॉग्स: उत्पादन लॉग्स की सुधार के लिए रंग कोडिंग के साथ पढ़ने योग्यता को बढ़ाता है।
- CLI तर्क: त्वरित समायोजन के लिए कमांड-लाइन तर्कों के माध्यम से कॉन्फ़िगरेशन फ़ील्ड सेट किए जा सकते हैं।
पूरी सूची के लिए, एयर के द्वारा उपलब्ध कराई गई सभी विशेषताओं और कार्यों के लिए, डेवलपर द्वारा प्रदान किए गए संदर्भ से जुड़ें।
अध्याय 3: air
का इंस्टॉल करना
3.1 go install
के माध्यम से इंस्टॉल करना
गो टूलचेन संस्करण 1.18 या उच्च इस्तेमाल करके Air को इंस्टॉल करने के लिए:
go install github.com/cosmtrek/air@latest
इससे air
आपके GOPATH/bin
में उपलब्ध हो जाएगा।
3.2 install.sh
स्क्रिप्ट का इस्तेमाल करना
एक और तरीका एक प्रदत्त इंस्टॉलेशन स्क्रिप्ट के माध्यम से है:
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
इंस्टॉलेशन के बाद, इसे जाँचने के लिए, निम्नलिखित तरीके से चलाएं:
air -v
3.3 विशेष इंस्टॉलेशन (डॉकर/पोडमैन और कस्टम पाथ)
उन लोगों के लिए जो डॉकर या पोडमैन का उपयोग कर रहे हैं, वहाँ एयर को शामिल करने का एक सरल तरीका है:
docker run -it --rm \
-w "/path/to/project" \
-v $(pwd):/path/to/project \
-p port:port \
cosmtrek/air
/path/to/project
को अपने प्रोजेक्ट के पथ से और port:port
को वांछित पोर्ट मैपिंग से बदलें।
या फिर, एक विशेष पैथ इंस्टॉलेशन के लिए:
curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/custom/path sh
अध्याय 4: अपने गो प्रोजेक्ट के लिए air
को संरूपित करना
4.1 .air.toml
विन्यास को समझना
.air.toml
एयर के लिए विन्यास फ़ाइल है। इसके जरिए आप निर्माण प्रक्रिया, निगरानी और लॉग आउटपुट से संबंधित सेटिंग्स को निर्दिष्ट कर सकते हैं। यहाँ एक संक्षेपित अवलोकन है:
-
root
: एयर के लिए कार्यक्षेत्र सेट करता है। -
build
: निर्माण से संबंधित सेटिंग्स जैसे कि निर्माण से पहले/पश्चात कमांड और मुख्य निर्माण कमांड शामिल है। -
tmp_dir
: वह निर्माण के लिए अस्थायी फ़ाइलें रखने की निर्दिष्ट दिर्घिका। -
log
: लॉग फ़ाइल सेटिंग्स को विन्यस्त करता है। -
color
: लॉग आउटपुट के प्रत्येक भाग का रंगसंवर्ण करता है।
4.2 कॉन्फ़िगरेशन फ़ाइल उत्पन्न करना और संशोधित करना
डिफ़ॉल्ट .air.toml
कॉन्फ़िगरेशन फ़ाइल उत्पन्न करने के लिए, निम्नलिखित को रन करें:
air init
इससे आपकी मौजूदा डायरेक्टरी में डिफ़ॉल्ट सेटिंग्स के साथ .air.toml
फ़ाइल बनायी जाएगी। इसे फिर आप अपने प्रोजेक्ट की आवश्यकताओं के अनुसार संशोधित कर सकते हैं। संदर्भ के लिए, आप प्रकार के air_example.toml
को देख सकते हैं।
4.3 CLI आर्ग्यूमेंट्स के साथ कॉन्फ़िगरेशन को अधिलेखित करना
तेज़ टेस्ट या छोटे बदलाव के लिए, आप CLI आर्ग्यूमेंट्स को पारित करके .air.toml
में कॉन्फ़िगरेशन को अधिलेखित कर सकते हैं। उदाहरण के लिए:
air --build.cmd "go build -o myapp" --build.bin "./myapp"
यह सुविधा आपको कॉन्फ़िगरेशन फ़ाइल को बदले बिना Air के व्यवहार को आसानी से अनुकूलित करने की अनुमति देती है।
अध्याय 5: अपने विकास वातावरण में air
को चलाना
6.1 अपने प्रोजेक्ट में air
को प्रारंभ करना
अपने प्रोजेक्ट में air
के साथ शुरू होने के लिए, अपने टर्मिनल में अपने प्रोजेक्ट के रूट डायरेक्टरी में नेविगेट करें और air
कमांड को निष्पादित करें। अगर .air.toml
कॉन्फ़िगरेशन फ़ाइल मौजूद है, तो air
स्वतः ही उसका उपयोग करेगा। अन्यथा, यह डिफ़ॉल्ट सेटिंग्स का उपयोग करेगा।
cd /path/to/your_project
air
युक्ति: अगर आप air
निष्पादनीय के साथ अनुमतियों से संकटों का सामना करते हैं, तो सुनिश्चित करें कि उसमें आवश्यक निष्पादन अनुमतियाँ हों (chmod +x $(go env GOPATH)/bin/air
)।
6.2 air
के साथ निर्माण और निष्पादन कमांडों को अनुकूलित करना
आप .air.toml
कॉन्फ़िगरेशन फ़ाइल में [build]
अनुभाग को संशोधित करके air
द्वारा उपयोग किए जाने वाले निर्माण और निष्पादन कमांडों को अनुकूलित कर सकते हैं। उदाहरण के लिए, निर्माण कमांड को बदलने और एक विभिन्न बाइनरी फ़ाइल को निर्दिष्ट करने के लिए:
[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"
अधिक जटिल निर्माण आवश्यकताओं के लिए, कॉन्फ़िगरेशन फ़ाइल में pre_cmd
और post_cmd
एरे आपको निर्माण प्रक्रिया से पहले और उसके बाद कमांड्स निष्पादित करने की अनुमति देते हैं।
6.3 डायरेक्टरियों को छोड़ना और परिवर्तनों के लिए देखभाल करना
air
आपको परिवर्तनों के लिए देखभाल करने वाले डायरेक्टरी को न देखने की अनुमति देती है, जो निर्माण को अंशतः नहीं जरूरत होती है।
इसे विन्यास करने के लिए, .air.toml
में exclude_dir
फ़ील्ड को अपडेट करें।
[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]
आप include_dir
का उपयोग करके अतिरिक्त डायरेक्टरियों को शामिल करने योग्य या include_ext
के साथ निश्चित फ़ाइल एक्सटेंशन के लिए देखने के लिए भी कर सकते हैं।
अध्याय 6: उन्नत उपयोग
6.1 air
को डॉकर कंटेनर के साथ सेट करना
air
का डॉकर कंटेनर के भीतर उपयोग आपकी विकास सेटअप को सरल कर सकता है, खासकर जब टीम के साथ काम कर रहे हैं। air
को अपने डॉकर वातावरण में शामिल करने के लिए, अपने Dockerfile
में air
को स्थापित करके और अपनी .air.toml
को कंटेनर में कॉपी करने के लिए निम्नलिखित करें:
FROM golang:1.18-alpine AS builder
RUN go install github.com/cosmtrek/air@latest
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
CMD ["air", "-c", ".air.toml"]
6.3 air
को डॉकर-संयोजन वातावरण में उपयोग करना
docker-compose
द्वारा प्रबंधित सेवा में air
को शामिल करने के लिए, अपने docker-compose.yaml
फ़ाइल में एक सेवा को परिभाषित करें:
version: '3.8'
services:
app:
build: .
ports:
- "808:808"
volumes:
- .:/app
command: ["air", "-c", ".air.toml"]
सुनिश्चित करें कि volumes
निर्देशिका को सही ढंग से आपके प्रोजेक्ट निर्देशिका से मैप कर रहा है ताकि air
फ़ाइल परिवर्तनों को ट्रैक कर सके।
अध्याय 7: सामान्य संकट निराकरण और FAQ
7.1 command not found: air
संकट को सुधारना
अगर आपको command not found: air
त्रुटि का सामना करते हैं, तो यह सामान्यत: इसका मतलब है कि air
बाइनरी आपके सिस्टम के PATH
में नहीं है। इसे सुलझाने के लिए, अपने PATH
परिवर्तन चक्र को आपके PATH
परिवर्तन चक्र में जोड़ें:
export PATH=$PATH:$(go env GOPATH)/bin
7.2 WSL परिवार में समस्याएँ
एक Windows Subsystem for Linux (WSL) पर्यावरण में, सुनिश्चित करें कि आप अपने .air.toml
में विशेष वर्णों को बचाने के लिए यह सुनिश्चित करें। उदाहरण के लिए, फ़ाइल पथों में बैकस्लैश को बचाने के लिए \\
का उपयोग करें।
7.3 बाइनरी चलाए बिना हॉट संकलन पर युक्तियाँ
यदि आप चाहते हैं कि air
आपकी गो एप्लिकेशन को संकलित करें बिना इसे चलाए, तो अपने .air.toml
के [build]
खंड में cmd
को एक कोई-संचालन कमांड (जैसे Unix पर /bin/true
) पर सेट करें:
[build]
cmd = "/bin/true"
इसका करके, air
फ़ाइल परिवर्तनों को अभी भी देखेगा और संकलन प्रक्रिया को ट्रिगर करेगा, लेकिन यह प्रयास नहीं करेगा कि परिणामस्वरूप बाइनरी फ़ाइल को निष्पादित करे।