Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

  • अपना एक्सटेंशन कॉन्फ़िगरेशन दूसरों के साथ साझा करें
  • विभिन्न प्रोजेक्ट्स के बीच अपने एक्सटेंशन कॉन्फ़िगरेशन को कॉपी करें (जैसे कि आपके स्टेजिंग प्रोजेक्ट से लेकर आपके प्रोडक्शन प्रोजेक्ट तक)
  • अपने सभी एक्‍सटेंशन एक साथ परिनियोजित करें
  • Firebase Local Emulator Suite का उपयोग करके जांच करें कि आपके एक्सटेंशन आपके ऐप्लिकेशन के साथ कैसे काम करते हैं
  • अपने एक्सटेंशन कॉन्फ़िगरेशन को स्रोत नियंत्रण के लिए प्रतिबद्ध करें
  • अपने 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",
     }
    }
    
  • .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

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

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

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

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

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

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

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

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

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

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

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

एक बार जब आप अपने एक्सटेंशन मेनिफेस्ट में कुछ एक्सटेंशन इंस्टेंस जोड़ लेते हैं, तो आप उसे 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 में रखें।

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

  • extensions/ EXTENSION_INSTANCE_ID .env.local में अनुकरण के दौरान आप जिन गैर-गुप्त मापदंडों का उपयोग करना चाहते हैं, उन्हें रखें
  • extensions/ EXTENSION_INSTANCE_ID .secret.local . में गुप्त पैरामीटर मान डालें