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

एक्सटेंशन मेनिफेस्ट एक्सटेंशन इंस्टेंस और उनके कॉन्फ़िगरेशन की एक सूची है। मेनिफेस्ट के साथ, आप यह कर सकते हैं:

  • अपने एक्सटेंशन कॉन्फ़िगरेशन को दूसरों के साथ साझा करें
  • विभिन्न परियोजनाओं के बीच अपने एक्सटेंशन कॉन्फ़िगरेशन की प्रतिलिपि बनाएँ (जैसे कि आपके स्टेजिंग प्रोजेक्ट से आपके उत्पादन प्रोजेक्ट तक)
  • अपने सभी एक्सटेंशन एक साथ परिनियोजित करें
  • फायरबेस लोकल एमुलेटर सूट का उपयोग करके परीक्षण करें कि आपके एक्सटेंशन आपके ऐप के साथ कैसे काम करते हैं
  • अपने एक्सटेंशन कॉन्फ़िगरेशन को स्रोत नियंत्रण के लिए प्रतिबद्ध करें
  • अपनी सीआई/सीडी पाइपलाइन में एक्सटेंशन शामिल करें

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

  • आपके 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 फ़ाइलें जिनमें आपके फायरबेस प्रोजेक्ट निर्देशिका के 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

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

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

  • फायरबेस सीएलआई के साथ अपने एक्सटेंशन मेनिफ़ेस्ट को प्रबंधित करें
  • किसी प्रोजेक्ट के एक्सटेंशन कॉन्फ़िगरेशन को निर्यात करें
  • मैनिफ़ेस्ट फ़ाइलों को मैन्युअल रूप से संपादित करें

पहले दो तरीकों को नीचे समझाया गया है।

फायरबेस सीएलआई के साथ अपने एक्सटेंशन मेनिफ़ेस्ट को प्रबंधित करें

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

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

फायरबेस लोकल एमुलेटर सुइट के साथ एक्सटेंशन कॉन्फ़िगरेशन का परीक्षण करें

एक बार जब आप अपने एक्सटेंशन मेनिफ़ेस्ट में कुछ एक्सटेंशन इंस्टेंस जोड़ लेते हैं, तो आप स्थानीय एमुलेटर सूट का उपयोग करके उनका परीक्षण कर सकते हैं।

  1. स्थानीय एमुलेटर सूट को स्थापित और कॉन्फ़िगर करें

  2. स्थानीय एम्यूलेटर सुइट प्रारंभ करें :

    • एमुलेटर सुइट को इंटरैक्टिव रूप से चलाने के लिए, चलाएँ: firebase emulators:start
    • एमुलेटर सूट चलाने और एक परीक्षण स्क्रिप्ट निष्पादित करने के लिए, चलाएँ: firebase emulators:exec my-test.sh

अब, यदि आपके मेनिफेस्ट में एक्सटेंशन इंस्टेंस सूचीबद्ध हैं, तो स्थानीय एमुलेटर सूट उन एक्सटेंशन के स्रोत कोड को ~/.cache/firebase/extensions पर डाउनलोड करेगा। एक बार जब वे डाउनलोड हो जाएंगे, तो स्थानीय एमुलेटर सूट शुरू हो जाएगा और आप किसी भी एक्सटेंशन के पृष्ठभूमि ट्रिगर कार्यों को ट्रिगर करने में सक्षम होंगे और अपने ऐप के साथ उनके एकीकरण का परीक्षण करने के लिए अपने ऐप को एमुलेटर सूट से कनेक्ट कर पाएंगे।

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

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

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

  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 में गुप्त पैरामीटर मान रखें