Firebase ऐप्लिकेशन होस्टिंग एमुलेटर की मदद से, वेब ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करना

App Hosting डिप्लॉयमेंट से पहले, App Hosting एमुलेटर का इस्तेमाल करके अपने ऐप्लिकेशन के लोकल टेस्ट किए जा सकते हैं. यह एमुलेटर, Firebase Local Emulator Suite का हिस्सा है.

App Hosting एमुलेटर का इस्तेमाल करने से पहले, पक्का करें कि आपने Firebase Local Emulator Suite के पूरे वर्कफ़्लो को समझ लिया हो. साथ ही, आपने Local Emulator Suite को इंस्टॉल और कॉन्फ़िगर कर लिया हो और इसके CLI कमांड की समीक्षा कर ली हो.

इस विषय में यह माना गया है कि आपको App Hosting के बारे में पहले से जानकारी है. ज़रूरत पड़ने पर, App Hosting के काम करने के तरीके को समझने के लिए, App Hosting के बारे में जानकारी और अन्य कॉन्टेंट देखें.

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

App Hosting एमुलेटर की मदद से, अपने वेब ऐप्लिकेशन को स्थानीय तौर पर टेस्ट किया जा सकता है और उनमें सुधार किया जा सकता है. इससे, डेवलपमेंट की प्रोसेस को आसान बनाया जा सकता है. साथ ही, Firebase का इस्तेमाल करके बनाए गए और App Hosting पर डिप्लॉय किए गए वेब ऐप्लिकेशन की क्वालिटी को बेहतर बनाया जा सकता है.

App Hosting एम्युलेटर:

  1. इसकी मदद से, अपने वेब ऐप्लिकेशन को स्थानीय तौर पर चलाया जा सकता है. इसके लिए, apphosting.yaml कॉन्फ़िगरेशन फ़ाइलों में तय किए गए एनवायरमेंट वैरिएबल का इस्तेमाल किया जाता है.
  2. आपके अलग-अलग App Hosting एनवायरमेंट में सेव किए गए सीक्रेट एक्सपोर्ट किए जा सकते हैं. इससे, अलग-अलग एनवायरमेंट में ऐप्लिकेशन को सिम्युलेट किया जा सकता है.
  3. इसका इस्तेमाल, Firebase के अन्य एम्युलेटर के साथ किया जा सकता है. अगर Firestore, Auth या किसी दूसरे एम्युलेटर का इस्तेमाल किया जा रहा है, तो Local Emulator Suite यह पक्का करता है कि App Hosting एम्युलेटर से पहले ये एम्युलेटर शुरू किए जाएं.

एम्युलेटर कॉन्फ़िगर करना

शुरू करने के लिए, Local Emulator Suite को Local Emulator Suite को इंस्टॉल, कॉन्फ़िगर, और इंटिग्रेट करना में बताए गए तरीके के मुताबिक इंस्टॉल और शुरू करें. आपको जिन Firebase एमुलेटर को सेट अप करना है उनके अलावा, App Hosting Emulator को भी चुनना न भूलें. सीएलआई, App Hosting एमुलेटर की कुछ वैल्यू के लिए आपसे पूछता है. इनमें ये शामिल हैं:

  • प्रोजेक्ट के हिसाब से आपके ऐप्लिकेशन की रूट डायरेक्ट्री; यह तब ज़रूरी है, जब App Hosting के साथ मोनोरेपो का इस्तेमाल किया जा रहा हो.
  • आपको किसी खास एनवायरमेंट के लिए, सीक्रेट एक्सपोर्ट करने हैं या नहीं.
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (.)

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)

i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

इस सेटअप फ़्लो में दी गई किसी भी वैल्यू का इस्तेमाल, firebase.json में App Hosting एमुलेटर कॉन्फ़िगरेशन को अपडेट करने के लिए किया जाता है. firebase.json को सीधे अपडेट करके भी, ऐप्लिकेशन होस्टिंग एमुलेटर को कॉन्फ़िगर किया जा सकता है. ऐप्लिकेशन होस्टिंग एम्युलेटर के लिए स्कीमा यह है:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommandOverride": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • एमुलेटर शुरू होने पर, startCommandOverride अपने-आप जनरेट और सेट हो जाता है. अगर यह पैरामीटर नहीं दिया जाता है, तो एमुलेटर आपके पैकेज मैनेजर के dev कमांड का पता लगाकर उसे चलाएगा.
  • rootDirectory का इस्तेमाल, मोनोरेपो प्रोजेक्ट सेटअप करने के लिए किया जाता है. अगर आपका वेब ऐप्लिकेशन किसी सबडायरेक्ट्री में है, तो आपको रूट (firebase.json की जगह) के हिसाब से उस डायरेक्ट्री का पाथ देना होगा.

इम्यूलेशन मैनेज करना

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

अलग-अलग एनवायरमेंट को स्थानीय तौर पर सिम्युलेट करने के लिए, पासवर्ड एक्सपोर्ट करना

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

इस निर्देश के लिए, आपको अपने प्रोजेक्ट के उपलब्ध App Hosting एनवायरमेंट में से किसी एक को चुनना होगा. एनवायरमेंट के हिसाब से App Hosting कॉन्फ़िगरेशन (उदाहरण के लिए, "apphosting.staging.yaml") और बेस App Hosting कॉन्फ़िगरेशन ("apphosting.yaml") को मर्ज कर दिया जाता है. इसमें, एनवायरमेंट के हिसाब से कॉन्फ़िगरेशन को प्राथमिकता दी जाती है. अगर दोनों कॉन्फ़िगरेशन में एक ही नाम वाले सीक्रेट मौजूद हैं, तो एनवायरमेंट के हिसाब से कॉन्फ़िगर किए गए सीक्रेट का इस्तेमाल किया जाता है.

उदाहरण के लिए, किसी स्टैजिंग एनवायरमेंट से एमुलेटर में पासवर्ड एक्सपोर्ट करने के लिए:

firebase apphosting:config:export --project <your firebase project Id>

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

आपकी apphosting.local.yaml फ़ाइल को अपडेट किया जाता है (अगर यह मौजूद नहीं है, तो बनाई जाती है) और इसमें एक्सपोर्ट किए गए पासवर्ड को एनवायरमेंट वैरिएबल के तौर पर जोड़ा जाता है. अब इस फ़ाइल में साफ़ तौर पर संवेदनशील जानकारी मौजूद है. इसलिए, यह फ़ाइल आपकी .gitignore फ़ाइल में अपने-आप जुड़ जाएगी, ताकि इसे गलती से आपके सोर्स कोड रिपॉज़िटरी में शामिल न किया जाए.

एम्युलेटर चलाना

firebase emulators:start

इससे, आपकी firebase.json फ़ाइल में बताए गए सभी एम्युलेटर शुरू हो जाएंगे. इनमें App Hosting एम्युलेटर भी शामिल है.