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

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

  • अपने एक्सटेंशन के कॉन्फ़िगरेशन को दूसरों के साथ शेयर करना
  • अलग-अलग प्रोजेक्ट के बीच अपने एक्सटेंशन कॉन्फ़िगरेशन को कॉपी करें (जैसे कि आपके स्टेजिंग प्रोजेक्ट से लेकर आपके प्रोडक्शन प्रोजेक्ट तक)
  • अपने सभी एक्सटेंशन एक साथ डिप्लॉय करें
  • Firebase लोकल एम्युलेटर सुइट का इस्तेमाल करके, ऐप्लिकेशन के साथ काम करने के तरीके की जांच करें
  • अपने एक्सटेंशन के कॉन्फ़िगरेशन को सोर्स कंट्रोल पर सेट करें
  • अपनी CI/CD पाइपलाइन में एक्सटेंशन शामिल करें

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

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

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

नीचे पहले दो तरीकों की व्याख्या की गई है.

Firebase सीएलआई की मदद से अपने एक्सटेंशन मेनिफ़ेस्ट को मैनेज करें

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

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

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 सीएलआई सेट अप करें
  2. शेल प्रॉम्प्ट से, प्रोजेक्ट डायरेक्ट्री में बदलें. (आपकी प्रोजेक्ट डायरेक्ट्री में firebase.json फ़ाइल है).
  3. ext:export कमांड चलाएं:
    firebase ext:export

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

Firebase लोकल एम्युलेटर सुइट की मदद से, एक्सटेंशन के कॉन्फ़िगरेशन की जांच करना

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

  1. लोकल एम्युलेटर सुइट को इंस्टॉल और कॉन्फ़िगर करें.

  2. लोकल एम्युलेटर सुइट शुरू करें:

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

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

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

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

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

  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 में सीक्रेट पैरामीटर वैल्यू डालें