एक्सटेंशन मेनिफ़ेस्ट, एक्सटेंशन इंस्टेंस और उनके कॉन्फ़िगरेशन की सूची होती है. मेनिफ़ेस्ट की मदद से, ये काम किए जा सकते हैं:
- एक्सटेंशन के कॉन्फ़िगरेशन को अन्य लोगों के साथ शेयर करना
- अलग-अलग प्रोजेक्ट के बीच अपने एक्सटेंशन कॉन्फ़िगरेशन को कॉपी करना (जैसे, अपने स्टेजिंग प्रोजेक्ट से प्रोडक्शन प्रोजेक्ट में)
- एक ही बार में सभी एक्सटेंशन डिप्लॉय करना
- 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}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
एक्सटेंशन मेनिफ़ेस्ट बनाना
एक्सटेंशन मेनिफ़ेस्ट बनाने के तीन तरीके हैं:
- Firebase CLI की मदद से, एक्सटेंशन के मेनिफ़ेस्ट को मैनेज करना
- किसी प्रोजेक्ट के एक्सटेंशन कॉन्फ़िगरेशन को एक्सपोर्ट करना
- मेनिफ़ेस्ट फ़ाइलों में मैन्युअल तरीके से बदलाव करना
पहले दो तरीकों के बारे में यहां बताया गया है.
Firebase CLI की मदद से, एक्सटेंशन के मेनिफ़ेस्ट को मैनेज करना
Firebase CLI की ज़्यादातर 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
किसी प्रोजेक्ट के एक्सटेंशन कॉन्फ़िगरेशन को एक्सपोर्ट करना
किसी प्रोजेक्ट के मौजूदा एक्सटेंशन कॉन्फ़िगरेशन को मेनिफ़ेस्ट में सेव करने के लिए, यह तरीका अपनाएं:
- अगर आपने अब तक ऐसा नहीं किया है, तो Firebase CLI सेट अप करें
- शेल प्रॉम्प्ट से, प्रोजेक्ट डायरेक्ट्री पर जाएं. (आपकी प्रोजेक्ट डायरेक्ट्री में
firebase.json
फ़ाइल मौजूद है). ext:export
कमांड चलाएं:firebase ext:export
ext:export
कमांड, firebase.json
फ़ाइल में extensions
सेक्शन जोड़ देगी. इसके अलावा, ext:export
कमांड से एक extensions
डायरेक्ट्री बनती है. इसमें आपके इंस्टॉल किए गए हर एक्सटेंशन इंस्टेंस के लिए एक .env
फ़ाइल होती है. इन फ़ाइलों में, हर इंस्टेंस के लिए कॉन्फ़िगरेशन पैरामीटर होते हैं.
Firebase Local Emulator Suite की मदद से, एक्सटेंशन के कॉन्फ़िगरेशन की जांच करना
एक्सटेंशन मेनिफ़ेस्ट में एक्सटेंशन के कुछ इंस्टेंस जोड़ने के बाद, Local Emulator Suite का इस्तेमाल करके उनकी जांच की जा सकती है.
Local Emulator Suite शुरू करें:
- Emulator Suite को इंटरैक्टिव तरीके से चलाने के लिए, यह कमांड चलाएं:
firebase emulators:start
- Emulator Suite चलाने और टेस्ट स्क्रिप्ट को लागू करने के लिए, यह कमांड चलाएं:
firebase emulators:exec my-test.sh
- Emulator Suite को इंटरैक्टिव तरीके से चलाने के लिए, यह कमांड चलाएं:
अब अगर आपके मेनिफ़ेस्ट में एक्सटेंशन इंस्टेंस की सूची दी गई है, तो Local Emulator Suite उन एक्सटेंशन का सोर्स कोड ~/.cache/firebase/extensions
में डाउनलोड करेगा. डाउनलोड हो जाने के बाद, Local Emulator Suite शुरू हो जाएगा. इसके बाद, एक्सटेंशन के बैकग्राउंड में ट्रिगर होने वाले किसी भी फ़ंक्शन को ट्रिगर किया जा सकेगा. साथ ही, अपने ऐप्लिकेशन को Emulator Suite से कनेक्ट किया जा सकेगा, ताकि यह जांच की जा सके कि एक्सटेंशन, ऐप्लिकेशन के साथ इंटिग्रेट हो रहे हैं या नहीं.
किसी प्रोजेक्ट में एक्सटेंशन कॉन्फ़िगरेशन डिप्लॉय करना
एक्सटेंशन मेनिफ़ेस्ट में कुछ एक्सटेंशन इंस्टेंस जोड़ने के बाद, Firebase CLI का इस्तेमाल करके इसे किसी प्रोजेक्ट में डिप्लॉय किया जा सकता है. एक्सटेंशन मेनिफ़ेस्ट के साथ डिप्लॉय करने पर, मेनिफ़ेस्ट में मौजूद सभी एक्सटेंशन इंस्टेंस को एक साथ किसी प्रोजेक्ट में इंस्टॉल, अपडेट, और कॉन्फ़िगर किया जाता है.
एक्सटेंशन मेनिफ़ेस्ट को डिप्लॉय करने के लिए:
- शेल प्रॉम्प्ट से, उस डायरेक्ट्री पर जाएं जिसमें सेव किए गए एक्सटेंशन का कॉन्फ़िगरेशन मौजूद है. (यह वह डायरेक्ट्री है जिसमें
firebase.json
शामिल है. अगर आपने अभी-अभीext:export
चलाया है, तो आप पहले से ही सही डायरेक्ट्री में हैं.) 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
में रखें