एक्सटेंशन का आकलन करने के लिए, एक्सटेंशन एम्युलेटर का इस्तेमाल करना

अपने ऐप्लिकेशन के साथ Extensions एम्युलेटर का इस्तेमाल करने से पहले, पक्का करें कि आपने Firebase Local Emulator Suite के पूरे वर्कफ़्लो को समझ लिया हो. साथ ही, आपने Local Emulator Suite को इंस्टॉल और कॉन्फ़िगर कर लिया हो और इसकी सीएलआई कमांड देख ली हों.

इस गाइड में यह भी माना गया है कि आपको Firebase Extensions के बारे में जानकारी है. साथ ही, आपको यह भी पता है कि Firebase ऐप्लिकेशन में इनका इस्तेमाल कैसे किया जाता है.

Extensions एम्युलेटर की मदद से क्या-क्या किया जा सकता है?

Extensions एम्युलेटर की मदद से, सुरक्षित लोकल एनवायरमेंट में एक्सटेंशन इंस्टॉल और मैनेज किए जा सकते हैं. साथ ही, बिलिंग की लागत को कम करते हुए, उनकी क्षमताओं को बेहतर तरीके से समझा जा सकता है. एम्युलेटर, आपके एक्सटेंशन के फ़ंक्शन को स्थानीय तौर पर चलाता है. इनमें ये शामिल हैं: Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication, और Pub/Sub के लिए एम्युलेटर का इस्तेमाल करके, बैकग्राउंड में इवेंट ट्रिगर करने वाले फ़ंक्शन और Cloud Functions v2 में लागू किए गए Eventarc-ट्रिगर किए गए फ़ंक्शन.

कोई Firebase प्रोजेक्ट चुनना

Firebase Local Emulator Suite, एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट की नकल करता है.

इस्तेमाल किए जाने वाले प्रोजेक्ट को चुनने के लिए, एम्युलेटर शुरू करने से पहले, अपनी वर्किंग डायरेक्ट्री में CLI चलाएं.firebase use इसके अलावा, हर एम्युलेटर कमांड में --project फ़्लैग पास किया जा सकता है.

Local Emulator Suite, असली Firebase प्रोजेक्ट और डेमो प्रोजेक्ट के इम्यूलेशन के साथ काम करता है.

प्रोजेक्ट का टाइप सुविधाएं एम्युलेटर के साथ इस्तेमाल करना
रियल

असली Firebase प्रोजेक्ट वह होता है जिसे आपने बनाया और कॉन्फ़िगर किया है. ऐसा ज़्यादातर Firebase कंसोल के ज़रिए किया जाता है.

असली प्रोजेक्ट में लाइव संसाधन होते हैं. जैसे, डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन या Firebase प्रोजेक्ट के लिए सेट अप किया गया कोई अन्य संसाधन.

असली Firebase प्रोजेक्ट के साथ काम करते समय, किसी भी या सभी प्रॉडक्ट के लिए एम्युलेटर चलाए जा सकते हैं.

जिन प्रॉडक्ट के लिए इम्यूलेशन नहीं किया जा रहा है उनके लिए, आपके ऐप्लिकेशन और कोड, लाइव रिसोर्स (डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन वगैरह) के साथ इंटरैक्ट करेंगे.

डेमो

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

डेमो प्रोजेक्ट के आईडी में demo- प्रीफ़िक्स होता है.

Firebase के डेमो प्रोजेक्ट के साथ काम करते समय, आपके ऐप्लिकेशन और कोड सिर्फ़ एम्युलेटर के साथ इंटरैक्ट करते हैं. अगर आपका ऐप्लिकेशन किसी ऐसे संसाधन से इंटरैक्ट करने की कोशिश करता है जिसके लिए कोई एम्युलेटर नहीं चल रहा है, तो वह कोड काम नहीं करेगा.

हमारा सुझाव है कि जहां भी हो सके वहां डेमो प्रोजेक्ट का इस्तेमाल करें. इसके ये फ़ायदे हैं:

  • सेटअप करना आसान है, क्योंकि बिना Firebase प्रोजेक्ट बनाए भी इम्यूलेटर चलाए जा सकते हैं
  • ज़्यादा सुरक्षा मिलती है. ऐसा इसलिए, क्योंकि अगर आपका कोड गलती से नॉन-इम्युलेटेड (प्रोडक्शन) संसाधनों को चालू कर देता है, तो डेटा में बदलाव, इस्तेमाल, और बिलिंग की कोई संभावना नहीं होती
  • ऑफ़लाइन मोड में बेहतर तरीके से काम करता है, क्योंकि SDK टूल के कॉन्फ़िगरेशन को डाउनलोड करने के लिए इंटरनेट का ऐक्सेस ज़रूरी नहीं है.
Authentication

एक्सटेंशन इंस्टॉल करना और उसका आकलन करना

Extensions एम्युलेटर का इस्तेमाल करके, यह आसानी से पता लगाया जा सकता है कि कोई एक्सटेंशन आपकी ज़रूरतों को पूरा करता है या नहीं.

मान लें कि आपको ट्रिगर ईमेल (firestore-send-email) एक्सटेंशन में दिलचस्पी है. हालांकि, यहां दिया गया वर्कफ़्लो किसी भी एक्सटेंशन के लिए काम करता है. लोकल एम्युलेटर के साथ चलाने पर, Trigger Email अपने-आप Cloud Firestore और Cloud Functions एम्युलेटर का इस्तेमाल करेगा.

किसी एक्सटेंशन का स्थानीय तौर पर आकलन करने के लिए:

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

    firebase ext:install --local firebase/firestore-send-email

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

  2. Local Emulator Suite को सामान्य तरीके से शुरू करें.

    firebase emulators:start

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

Emulator Suite UI का इस्तेमाल करके, ईमेल दस्तावेज़ों के कलेक्शन में डेटा जोड़ा जा सकता है. साथ ही, Trigger Email एक्सटेंशन के लिए ज़रूरी अन्य बैकएंड संसाधन सेट अप किए जा सकते हैं.

इसके अलावा, लगातार इंटिग्रेशन वर्कफ़्लो जैसे नॉन-इंटरैक्टिव टेस्टिंग एनवायरमेंट के लिए, एक्सटेंशन का आकलन करने वाली टेस्ट स्क्रिप्ट लिखी जा सकती है. इसमें अन्य चरणों के साथ-साथ, ज़रूरी Cloud Firestore डेटा को पॉप्युलेट करने और फ़ंक्शन को ट्रिगर करने जैसे चरण शामिल होते हैं. इसके बाद, अपनी टेस्ट स्क्रिप्ट को लागू करने के लिए, Local Emulator Suite को लागू करें:

firebase emulators:exec my-test.sh

Extensions एम्युलेटर के साथ टेस्टिंग, प्रोडक्शन से कैसे अलग होती है

Extensions एम्युलेटर की मदद से, एक्सटेंशन को इस तरह से टेस्ट किया जा सकता है कि वह प्रोडक्शन के अनुभव से काफ़ी हद तक मेल खाता हो. हालांकि, प्रोडक्शन के व्यवहार में कुछ अंतर हैं.

Cloud IAM

Firebase Emulator Suite, IAM से जुड़ी किसी भी सुविधा को चलाने के लिए, उसे दोहराने या उसका पालन करने की कोशिश नहीं करता. एम्युलेटर, Firebase के सुरक्षा नियमों का पालन करते हैं. हालांकि, कुछ मामलों में आईएएम का इस्तेमाल किया जाता है. उदाहरण के लिए, Cloud Functions को चालू करने वाले सेवा खाते और अनुमतियों को सेट करने के लिए. ऐसे मामलों में, एम्युलेटर को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, यह आपके डेवलपर मशीन पर उपलब्ध ग्लोबल खाते का इस्तेमाल करेगा. यह सीधे तौर पर लोकल स्क्रिप्ट चलाने जैसा है.

ट्रिगर करने के टाइप से जुड़ी सीमा

फ़िलहाल, Firebase Local Emulator Suite सिर्फ़ एचटीटीपी अनुरोध से ट्रिगर होने वाले फ़ंक्शन, एक्सटेंशन के लिए Eventarc कस्टम इवेंट ट्रिगर, और Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication, और Pub/Sub के लिए बैकग्राउंड इवेंट से ट्रिगर होने वाले फ़ंक्शन के साथ काम करता है. ट्रिगर किए गए अन्य फ़ंक्शन का इस्तेमाल करने वाले एक्सटेंशन का आकलन करने के लिए, आपको टेस्ट Firebase प्रोजेक्ट में अपना एक्सटेंशन इंस्टॉल करना होगा.

आगे क्या करना है?