एक्सटेंशन मेनिफ़ेस्ट की मदद से प्रोजेक्ट कॉन्फ़िगरेशन मैनेज करें

एक्सटेंशन मेनिफ़ेस्ट, एक्सटेंशन इंस्टेंस और उनके कॉन्फ़िगरेशन की सूची होती है. मेनिफ़ेस्ट की मदद से, ये काम किए जा सकते हैं:

  • एक्सटेंशन का कॉन्फ़िगरेशन दूसरों के साथ शेयर करना
  • अलग-अलग प्रोजेक्ट के बीच अपने एक्सटेंशन कॉन्फ़िगरेशन को कॉपी करना. जैसे, अपने स्टैजिंग प्रोजेक्ट से अपने प्रोडक्शन प्रोजेक्ट में
  • एक साथ सभी एक्सटेंशन डिप्लॉय करना
  • Firebase Local Emulator Suite का इस्तेमाल करके, यह जांचें कि आपके एक्सटेंशन आपके ऐप्लिकेशन के साथ कैसे काम करते हैं
  • एक्सटेंशन के कॉन्फ़िगरेशन को सोर्स कंट्रोल में कमिट करना
  • अपनी सीआई/सीडी पाइपलाइन में एक्सटेंशन शामिल करना

एक्सटेंशन मेनिफ़ेस्ट के दो हिस्से होते हैं:

  • आपकी firebase.json का extensions सेक्शन, जो इंस्टेंस आईडी से एक्सटेंशन वर्शन के रेफ़रंस का मैप है. उदाहरण के लिए:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • .env फ़ाइलें, जिनमें आपके हर एक्सटेंशन इंस्टेंस के लिए कॉन्फ़िगरेशन होता है. ये फ़ाइलें, आपके Firebase प्रोजेक्ट डायरेक्ट्री की extensions/ सबडायरेक्ट्री में होती हैं. उदाहरण के लिए, storage-resize-images के किसी इंस्टेंस में, .env फ़ाइल कुछ इस तरह की हो सकती है:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

एक्सटेंशन मेनिफ़ेस्ट बनाना

एक्सटेंशन मेनिफ़ेस्ट बनाने के तीन तरीके हैं:

  • Firebase CLI की मदद से, अपने एक्सटेंशन मेनिफ़ेस्ट को मैनेज करना
  • किसी प्रोजेक्ट के एक्सटेंशन कॉन्फ़िगरेशन को एक्सपोर्ट करना
  • मेनिफ़ेस्ट फ़ाइलों में मैन्युअल तरीके से बदलाव करना

पहले दो तरीकों के बारे में यहां बताया गया है.

Firebase CLI की मदद से, अपने एक्सटेंशन मेनिफ़ेस्ट को मैनेज करना

--local विकल्प के साथ Firebase CLI के ज़्यादातर ext: निर्देश चलाए जा सकते हैं. इससे, प्रोजेक्ट के मौजूदा कॉन्फ़िगरेशन में बदलाव किए बिना, एक्सटेंशन मेनिफ़ेस्ट को अपडेट किया जा सकता है.

उदाहरण के लिए:

firebase ext:install --local firebase/firestore-bigquery-export

ऊपर दिया गया निर्देश चलाने पर, आपको firebase/firestore-bigquery-export एक्सटेंशन के नए वर्शन को कॉन्फ़िगर करने और कॉन्फ़िगरेशन को मेनिफ़ेस्ट में सेव करने के लिए कहा जाएगा. हालांकि, इससे कॉन्फ़िगरेशन आपके प्रोजेक्ट में डिप्लॉय नहीं होगा.

एक्सटेंशन मेनिफ़ेस्ट में बदलाव करने वाले निर्देशों के कुछ और उदाहरण यहां दिए गए हैं:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

किसी प्रोजेक्ट के एक्सटेंशन कॉन्फ़िगरेशन को एक्सपोर्ट करना

किसी प्रोजेक्ट के मौजूदा एक्सटेंशन कॉन्फ़िगरेशन को मेनिफ़ेस्ट में सेव करने के लिए, ये काम करें:

  1. अगर आपने अब तक ऐसा नहीं किया है, तो Firebase CLI सेट अप करें
  2. शेल प्रॉम्प्ट से, प्रोजेक्ट डायरेक्ट्री पर जाएं. (आपकी प्रोजेक्ट डायरेक्ट्री में firebase.json फ़ाइल मौजूद है).
  3. ext:export निर्देश चलाएं:
    firebase ext:export

ext:export कमांड, firebase.json फ़ाइल में extensions सेक्शन जोड़ देगा. इसके अलावा, ext:export कमांड से एक extensions डायरेक्ट्री बनती है, जिसमें आपके इंस्टॉल किए गए हर एक्सटेंशन इंस्टेंस के लिए एक .env फ़ाइल होती है. इन फ़ाइलों में, हर इंस्टेंस के लिए कॉन्फ़िगरेशन पैरामीटर होते हैं.

Firebase Local Emulator Suite की मदद से, एक्सटेंशन कॉन्फ़िगरेशन की जांच करना

एक्सटेंशन मेनिफ़ेस्ट में कुछ एक्सटेंशन इंस्टेंस जोड़ने के बाद, Local Emulator Suite का इस्तेमाल करके उनकी जांच की जा सकती है.

  1. Local Emulator Suite इंस्टॉल और कॉन्फ़िगर करें.

  2. Local Emulator Suite शुरू करें:

    • Emulator Suite को इंटरैक्टिव तरीके से चलाने के लिए, यह चलाएं: firebase emulators:start
    • Emulator Suite चलाने और टेस्ट स्क्रिप्ट को चलाने के लिए, यह चलाएं: firebase emulators:exec my-test.sh

अब, अगर आपके मेनिफ़ेस्ट में एक्सटेंशन इंस्टेंस मौजूद हैं, तो Local Emulator Suite उन एक्सटेंशन का सोर्स कोड ~/.cache/firebase/extensions में डाउनलोड करेगा. डाउनलोड होने के बाद, Local Emulator Suite शुरू हो जाएगा. इसके बाद, आपके पास किसी भी एक्सटेंशन के बैकग्राउंड में ट्रिगर होने वाले फ़ंक्शन को ट्रिगर करने का विकल्प होगा. साथ ही, अपने ऐप्लिकेशन के साथ उनके इंटिग्रेशन की जांच करने के लिए, अपने ऐप्लिकेशन को Emulator Suite से कनेक्ट किया जा सकता है.

किसी प्रोजेक्ट में एक्सटेंशन कॉन्फ़िगरेशन को डिप्लॉय करना

एक्सटेंशन मेनिफ़ेस्ट में कुछ एक्सटेंशन इंस्टेंस जोड़ने के बाद, Firebase CLI का इस्तेमाल करके, इसे किसी प्रोजेक्ट में डिप्लॉय किया जा सकता है. एक्सटेंशन मेनिफ़ेस्ट के साथ डिप्लॉय करने पर, मेनिफ़ेस्ट में मौजूद सभी एक्सटेंशन इंस्टेंस एक साथ प्रोजेक्ट में इंस्टॉल, अपडेट, और कॉन्फ़िगर हो जाते हैं.

एक्सटेंशन मेनिफ़ेस्ट को डिप्लॉय करने के लिए:

  1. शेल प्रॉम्प्ट से, उस डायरेक्ट्री पर जाएं जिसमें सेव किए गए एक्सटेंशन कॉन्फ़िगरेशन मौजूद हैं. (यह वह डायरेक्ट्री है जिसमें firebase.json शामिल है. अगर आपने अभी-अभी ext:export चलाया है, तो इसका मतलब है कि आप पहले से ही सही डायरेक्ट्री में हैं.)
  2. deploy कमांड चलाएं. अगर आपको मौजूदा प्रोजेक्ट के अलावा किसी दूसरे प्रोजेक्ट में एक्सटेंशन डिप्लॉय करने हैं, तो --project= की जानकारी भी दें:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

deploy कमांड, हर इंस्टेंस कॉन्फ़िगरेशन की पुष्टि करेगा. साथ ही, आपसे पूछेगा कि क्या आपको अपने डेस्टिनेशन प्रोजेक्ट से ऐसे सभी एक्सटेंशन इंस्टेंस मिटाने हैं जो firebase.json में शामिल नहीं हैं. इसके बाद, आपके सभी एक्सटेंशन इंस्टेंस डिप्लॉय करेगा.

प्रोजेक्ट के हिसाब से एक्सटेंशन कॉन्फ़िगरेशन

सेव किए गए एक्सटेंशन कॉन्फ़िगरेशन का इस्तेमाल, कई अलग-अलग प्रोजेक्ट में डिप्लॉय करने के लिए किया जा सकता है. उदाहरण के लिए, स्टेजिंग प्रोजेक्ट और प्रोडक्शन प्रोजेक्ट. ऐसा करने पर, हो सकता है कि हर प्रोजेक्ट के लिए कुछ पैरामीटर वैल्यू अलग-अलग होनी चाहिए. प्रोजेक्ट के हिसाब से .env फ़ाइलें, यह काम करने में मदद करती हैं:

  • extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID में, अलग-अलग प्रोजेक्ट के लिए पैरामीटर की अलग-अलग वैल्यू डालें
  • शेयर किए गए पैरामीटर की वैल्यू को extensions/EXTENSION_INSTANCE_ID.env में डालें.

कभी-कभी, अपने एक्सटेंशन को एमुलेट करते समय, आपको किसी दूसरी पैरामीटर वैल्यू का इस्तेमाल करना पड़ सकता है: उदाहरण के लिए, आपको प्रोडक्शन एपीआई पासकोड के बजाय, टेस्ट एपीआई पासकोड देना पड़ सकता है. इन पैरामीटर को .local फ़ाइल में डालें:

  • extensions/EXTENSION_INSTANCE_ID.env.local में ऐसे पैरामीटर डालें जिनका इस्तेमाल आपको इम्यूलेशन के दौरान करना है
  • extensions/EXTENSION_INSTANCE_ID.secret.local में गुप्त पैरामीटर वैल्यू डालें