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

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

इस गाइड में यह भी माना गया है कि आपको Firebase एक्सटेंशन और Firebase ऐप्लिकेशन में उन्हें इस्तेमाल करने के तरीके के बारे में पता है.

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

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

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

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

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

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

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

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

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

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

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

डेमो

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

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

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

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

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

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

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

मान लें कि आपकी दिलचस्पी, ट्रिगर ईमेल (firestore-send-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 से कनेक्ट किया जा सकेगा, ताकि यह देखा जा सके कि आपके ऐप्लिकेशन के साथ इंटिग्रेशन की जांच कैसे की जा सकती है.

ईमेल दस्तावेज़ों के कलेक्शन में डेटा जोड़ने के लिए, Emulator Suite के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल किया जा सकता है. साथ ही, ट्रिगर ईमेल एक्सटेंशन की ज़रूरत के मुताबिक अन्य बैकएंड रिसॉर्स भी सेट अप किए जा सकते हैं.

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

firebase emulators:exec my-test.sh

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

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

Cloud IAM

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

ट्रिगर करने के टाइप की सीमा

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

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