अध्याय 1: लाइव रिलोडिंग का परिचय

लाइव रिलोडिंग क्या है?

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

गो डेवलपमेंट के लिए लाइव रिलोडिंग के लाभ

लाइव रिलोडिंग विकास प्रक्रिया को काफी तेज़ कर सकता है। गो डेवलपर्स के लिए, जो अपने कोड को कंपाइल करने से पहले रन करने का अभ्यास करते हैं, लाइव रिलोडिंग का मतलब है कि उनकी प्रक्रिया में सुधार होता है और तुरंत प्रतिक्रिया मिलती है। इसके लाभ निम्नलिखित हैं:

  1. उत्पादकता में वृद्धि: विकासक बिना अवरोध के ध्यान में रह सकते हैं, क्योंकि उन्हें मैन्युअल निर्माण करने की आवश्यकता नहीं होती है।
  2. समय की बचत: लाइव रिलोडिंग से कोड में की गई परिवर्तनों को चल रहे एप्लिकेशन में देखने का समय कम हो जाता है।
  3. त्रुटि का पता लगाना: तुरंत निर्माण और पुनरारंभ से डेवलपर्स को त्रुटियों का पता लगाने और सुधारने की सुविधा मिलती है।
  4. सरलीकृत वर्कफ़्लो: विकास प्रक्रिया में सहजता और अधिक दक्षता डालता है।

अध्याय 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 एरे आपको निर्माण प्रक्रिया से पहले और उसके बाद कमांड्स निष्पादित करने की अनुमति देते हैं।

सुझाव: Air कॉन्फ़िगरेशन का पूरा उदाहरण

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 फ़ाइल परिवर्तनों को अभी भी देखेगा और संकलन प्रक्रिया को ट्रिगर करेगा, लेकिन यह प्रयास नहीं करेगा कि परिणामस्वरूप बाइनरी फ़ाइल को निष्पादित करे।