Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

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

फायरबेस लोकल एमुलेटर सूट को विभिन्न प्रोटोटाइप और परीक्षण वातावरण के लिए स्थापित और कॉन्फ़िगर किया जा सकता है, एक बार के प्रोटोटाइप सत्र से लेकर उत्पादन-पैमाने पर निरंतर एकीकरण वर्कफ़्लो तक कुछ भी।

स्थानीय एमुलेटर सूट स्थापित करें

एमुलेटर सूट को स्थापित करने से पहले आपको आवश्यकता होगी:

  • Node.js संस्करण 8.0 या उच्चतर।
  • जावा JDK संस्करण 11 या उच्चतर।

एमुलेटर सूट स्थापित करने के लिए:

  1. फायरबेस सीएलआई स्थापित करें। अगर आपके पास पहले से Firebase CLI इंस्टॉल नहीं है, तो इसे अभी इंस्टॉल करें। एमुलेटर सूट का उपयोग करने के लिए आपको सीएलआई संस्करण 8.14.0 या उच्चतर की आवश्यकता होगी। आप निम्न कमांड का उपयोग करके जांच सकते हैं कि आपने कौन सा संस्करण स्थापित किया है:
    firebase --version
  2. यदि आपने पहले से ऐसा नहीं किया है, तो वर्तमान कार्यशील निर्देशिका को फायरबेस प्रोजेक्ट के रूप में प्रारंभ करें, ऑनस्क्रीन संकेतों का पालन करके निर्दिष्ट करें कि कौन से उत्पादों का उपयोग करना है:
    firebase init
  3. एमुलेटर सूट सेट करें। यह कमांड एक कॉन्फ़िगरेशन विज़ार्ड शुरू करता है जो आपको रुचि के एमुलेटर का चयन करने देता है, संबंधित एमुलेटर बाइनरी फ़ाइलों को डाउनलोड करता है, और डिफ़ॉल्ट उपयुक्त नहीं होने पर एमुलेटर पोर्ट सेट करता है।
    firebase init emulators

एक बार एक एमुलेटर स्थापित हो जाने के बाद, कोई अपडेट जांच नहीं की जाती है और जब तक आप अपने फायरबेस सीएलआई संस्करण को अपडेट नहीं करते हैं, तब तक कोई अतिरिक्त स्वचालित डाउनलोड नहीं होगा।

एमुलेटर सूट कॉन्फ़िगर करें

आप वैकल्पिक रूप से एमुलेटर के नेटवर्क पोर्ट और सुरक्षा नियम परिभाषाओं के पथ को firebase.json फ़ाइल में कॉन्फ़िगर कर सकते हैं:

  • firebase init emulators चलाकर या मैन्युअल रूप से firebase.json को संपादित करके एमुलेटर पोर्ट बदलें।
  • मैन्युअल रूप से firebase.json संपादित करके सुरक्षा नियम परिभाषाओं का पथ बदलें।

यदि आप इन सेटिंग्स को कॉन्फ़िगर नहीं करते हैं, तो एमुलेटर अपने डिफ़ॉल्ट पोर्ट पर सुनेंगे, और क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज एमुलेटर खुली डेटा सुरक्षा के साथ चलेंगे।

आज्ञा विवरण
इनिट एमुलेटर एक एमुलेटर आरंभीकरण विज़ार्ड प्रारंभ करें। इंस्टॉल किए जाने वाले एमुलेटर की पहचान करें और वैकल्पिक रूप से एमुलेटर पोर्ट सेटिंग्स निर्दिष्ट करें। init emulators गैर-विनाशकारी है; डिफ़ॉल्ट स्वीकार करना वर्तमान एमुलेटर कॉन्फ़िगरेशन को सुरक्षित रखेगा।

पोर्ट विन्यास

प्रत्येक एमुलेटर आपकी मशीन पर एक पसंदीदा डिफ़ॉल्ट मान के साथ एक अलग पोर्ट से जुड़ता है।

एम्यूलेटर डिफ़ॉल्ट पोर्ट
प्रमाणीकरण 9099
एमुलेटर सूट यूआई 4000
बादल कार्य 5001
इवेंटारसी 9299
रीयलटाइम डेटाबेस 9000
क्लाउड फायरस्टोर 8080
घन संग्रहण 9199
फायरबेस होस्टिंग 5000
पब/उप 8085

सुरक्षा नियम विन्यास

एमुलेटर firebase.json में database , firestore और storage कॉन्फ़िगरेशन कुंजियों से सुरक्षा नियम कॉन्फ़िगरेशन लेंगे।

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore": {
    "rules": "firestore.rules"
  },
  "storage": {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

जावा विकल्प निर्दिष्ट करना

रीयलटाइम डेटाबेस एमुलेटर, क्लाउड फायरस्टोर एमुलेटर, और क्लाउड स्टोरेज एमुलेटर का हिस्सा जावा पर आधारित है, जिसे पर्यावरण चर JAVA_TOOL_OPTIONS के माध्यम से JVM झंडे के साथ अनुकूलित किया जा सकता है।

उदाहरण के लिए, यदि आप जावा हीप स्पेस से संबंधित त्रुटियों का अनुभव करते हैं, तो आप अधिकतम जावा हीप आकार को 4GB तक बढ़ा सकते हैं:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" जैसे रिक्त स्थान द्वारा अलग किए गए उद्धरणों में एकाधिक फ़्लैग निर्दिष्ट किए जा सकते हैं। झंडे केवल एमुलेटर के जावा-आधारित घटकों को प्रभावित करते हैं और फायरबेस सीएलआई के अन्य हिस्सों, जैसे एमुलेटर सूट यूआई पर कोई प्रभाव नहीं पड़ता है।

एमुलेटर शुरू करें

आप एमुलेटर को मैन्युअल रूप से समाप्त होने तक चलाने के लिए शुरू कर सकते हैं, या निर्दिष्ट परीक्षण स्क्रिप्ट की अवधि के लिए चलाने के लिए स्वचालित रूप से बंद हो सकते हैं।

आज्ञा विवरण
एमुलेटर: स्टार्ट Firebase.json में कॉन्फ़िगर किए गए firebase.json उत्पादों के लिए एमुलेटर प्रारंभ करें। स्पष्ट रूप से बंद होने तक एमुलेटर प्रक्रियाएं चलती रहेंगी। कॉलिंग emulators:start एमुलेटर को ~/.cache/firebase/emulators/ पर डाउनलोड करेगा यदि वे पहले से इंस्टॉल नहीं हैं।
झंडा डिक्रिप्शन
--only वैकल्पिक। सीमित करें कि कौन से एमुलेटर शुरू होते हैं। एम्यूलेटर नामों की अल्पविराम से अलग की गई सूची की आपूर्ति करें, जिसमें एक या अधिक 'प्रमाणीकरण', 'डेटाबेस', 'फ़ायरस्टोर', 'फ़ंक्शन', 'होस्टिंग' या 'पबसुब' निर्दिष्ट करें।
--inspect-functions debug_port वैकल्पिक। निर्दिष्ट पोर्ट पर फ़ंक्शन के ब्रेकपॉइंट डिबगिंग को सक्षम करने के लिए क्लाउड फ़ंक्शंस एमुलेटर के साथ उपयोग करें (या डिफ़ॉल्ट पोर्ट 9229 यदि तर्क छोड़ा गया है)। ध्यान दें कि जब इस ध्वज की आपूर्ति की जाती है, तो क्लाउड फ़ंक्शंस एमुलेटर एक विशेष क्रमबद्ध निष्पादन मोड में स्विच हो जाता है जिसमें अनुक्रमिक (फीफो) क्रम में कार्यों को एक ही प्रक्रिया में निष्पादित किया जाता है; यह फ़ंक्शन डिबगिंग को सरल करता है, हालांकि व्यवहार बहु-प्रक्रिया से भिन्न होता है, क्लाउड में फ़ंक्शन के समानांतर निष्पादन।
--export-on-exit= वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। शटडाउन होने पर एमुलेटर को निर्देशिका में डेटा निर्यात करने का निर्देश दें, जैसा कि emulators:export कमांड। निर्यात निर्देशिका को इस ध्वज के साथ निर्दिष्ट किया जा सकता firebase emulators:start --export-on-exit=./saved-data । यदि --import का उपयोग किया जाता है, तो निर्यात पथ उसी पर डिफ़ॉल्ट हो जाता है; उदाहरण के लिए: firebase emulators:start --import=./data-path --export-on-exit । अंत में, यदि वांछित है, तो --import और --export-on-exit झंडे के लिए अलग-अलग निर्देशिका पथ पास करें।
--import= import_directory वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। --export-on-exit स्टार्टअप विकल्प या emulators:export कमांड। वर्तमान में एम्यूलेटर मेमोरी में मौजूद कोई भी डेटा ओवरविट हो जाएगा।
अनुकरणकर्ता: निष्पादन scriptpath firebase.json में कॉन्फ़िगर किए गए scriptpath उत्पादों के लिए एमुलेटर शुरू करने के बाद स्क्रिप्टपथ पर स्क्रिप्ट चलाएँ। जब स्क्रिप्ट चलना समाप्त हो जाएगी तो एमुलेटर प्रक्रियाएं स्वचालित रूप से बंद हो जाएंगी।
झंडा डिक्रिप्शन
--only वैकल्पिक। सीमित करें कि कौन से एमुलेटर शुरू होते हैं। एक या अधिक 'फ़ायरस्टोर', 'डेटाबेस', 'फ़ंक्शंस', 'होस्टिंग', या 'पबसुब' को निर्दिष्ट करते हुए एम्यूलेटर नामों की अल्पविराम से अलग की गई सूची की आपूर्ति करें।
--inspect-functions debug_port वैकल्पिक। निर्दिष्ट पोर्ट पर फ़ंक्शन के ब्रेकपॉइंट डिबगिंग को सक्षम करने के लिए क्लाउड फ़ंक्शंस एमुलेटर के साथ उपयोग करें (या डिफ़ॉल्ट पोर्ट 9229 यदि तर्क छोड़ा गया है)। ध्यान दें कि जब इस ध्वज की आपूर्ति की जाती है, तो क्लाउड फ़ंक्शंस एमुलेटर एक विशेष क्रमबद्ध निष्पादन मोड में स्विच हो जाता है जिसमें अनुक्रमिक (फीफो) क्रम में कार्यों को एक ही प्रक्रिया में निष्पादित किया जाता है; यह फ़ंक्शन डिबगिंग को सरल करता है, हालांकि व्यवहार बहु-प्रक्रिया से भिन्न होता है, क्लाउड में फ़ंक्शन के समानांतर निष्पादन।
--export-on-exit= वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। शटडाउन होने पर एमुलेटर को निर्देशिका में डेटा निर्यात करने का निर्देश दें, जैसा कि emulators:export कमांड। निर्यात निर्देशिका को इस ध्वज के साथ निर्दिष्ट किया जा सकता firebase emulators:start --export-on-exit=./saved-data । यदि --import का उपयोग किया जाता है, तो निर्यात पथ उसी पर डिफ़ॉल्ट हो जाता है; उदाहरण के लिए: firebase emulators:start --import=./data-path --export-on-exit । अंत में, यदि वांछित है, तो --import और --export-on-exit झंडे के लिए अलग-अलग निर्देशिका पथ पास करें।
--import= import_directory वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। --export-on-exit स्टार्टअप विकल्प या emulators:export कमांड। वर्तमान में एम्यूलेटर मेमोरी में मौजूद कोई भी डेटा अधिलेखित कर दिया जाएगा।
--ui वैकल्पिक। निष्पादन के दौरान एमुलेटर यूआई चलाएँ।

firebase emulators:exec विधि आम तौर पर निरंतर एकीकरण वर्कफ़्लो के लिए अधिक उपयुक्त होती है।

एमुलेटर डेटा निर्यात और आयात करें

आप साझा करने योग्य, सामान्य बेसलाइन डेटा सेट के रूप में उपयोग करने के लिए प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज एमुलेटर से डेटा निर्यात कर सकते हैं। इन डेटा सेटों को --import ध्वज का उपयोग करके आयात किया जा सकता है, जैसा कि ऊपर वर्णित है।

अनुकरणकर्ता:निर्यात export_directory

प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर । चल रहे क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर इंस्टेंस से डेटा निर्यात करें। यदि यह पहले से मौजूद नहीं है तो निर्दिष्ट export_directory बनाया जाएगा। यदि निर्दिष्ट निर्देशिका मौजूद है, तो आपको यह पुष्टि करने के लिए कहा जाएगा कि पिछले निर्यात डेटा को अधिलेखित किया जाना चाहिए। आप --force ध्वज का उपयोग करके इस संकेत को छोड़ सकते हैं। निर्यात निर्देशिका में डेटा मेनिफेस्ट फ़ाइल, firebase-export-metadata.json शामिल है।

ऊपर वर्णित --export-on-exit फ़्लैग का उपयोग करके आप एमुलेटर को स्वचालित रूप से डेटा निर्यात करने का निर्देश दे सकते हैं।

अपने सीआई सिस्टम के साथ एकीकृत करें

कंटेनरीकृत एमुलेटर सूट छवियों को चलाना

एक विशिष्ट सीआई सेटअप में कंटेनरों के साथ एम्यूलेटर सूट की स्थापना और विन्यास सीधा है।

ध्यान देने योग्य कुछ मुद्दे हैं:

  • JAR फाइलें ~/.cache/firebase/emulators/ पर इंस्टॉल और कैश की जाती हैं।

    • बार-बार डाउनलोड होने से बचने के लिए आप इस पथ को अपने CI कैश कॉन्फ़िगरेशन में जोड़ना चाह सकते हैं।
  • यदि आपके पास अपने भंडार में firebase.json फ़ाइल नहीं है, तो आपको एमुलेटर में एक कमांड लाइन तर्क जोड़ना होगा emulators:start या emulators:exec कमांड यह निर्दिष्ट करने के लिए कि कौन से एमुलेटर शुरू किए जाने चाहिए। उदाहरण के लिए,
    --only functions,firestore

एक प्रामाणिक टोकन उत्पन्न करें (केवल होस्टिंग एमुलेटर)

यदि आपका निरंतर एकीकरण कार्यप्रवाह फायरबेस होस्टिंग पर निर्भर करता है, तो आपको firebase emulators:exec । अन्य एमुलेटर को लॉगिन की आवश्यकता नहीं है।

टोकन जनरेट करने के लिए, अपने स्थानीय परिवेश पर firebase login:ci चलाएँ; यह एक सीआई प्रणाली से नहीं किया जाना चाहिए। प्रमाणित करने के लिए निर्देशों का पालन करें। आपको प्रति प्रोजेक्ट केवल एक बार इस चरण को करने की आवश्यकता है, क्योंकि टोकन पूरे बिल्ड में मान्य होगा। टोकन को पासवर्ड की तरह माना जाना चाहिए; सुनिश्चित करें कि इसे गुप्त रखा गया है।

यदि आपका सीआई वातावरण आपको पर्यावरण चर निर्दिष्ट करने की अनुमति देता है जिसका उपयोग बिल्ड स्क्रिप्ट में किया जा सकता है, तो बस FIREBASE_TOKEN नामक एक पर्यावरण चर बनाएं, जिसमें मान पहुंच टोकन स्ट्रिंग है। फायरबेस सीएलआई स्वचालित रूप से FIREBASE_TOKEN पर्यावरण चर को उठाएगा और अनुकरणकर्ता ठीक से शुरू हो जाएंगे।

अंतिम उपाय के रूप में, आप बस अपनी बिल्ड स्क्रिप्ट में टोकन शामिल कर सकते हैं, लेकिन सुनिश्चित करें कि अविश्वसनीय पार्टियों की पहुंच नहीं है। इस हार्ड-कोडेड दृष्टिकोण के लिए, आप --token "YOUR_TOKEN_STRING_HERE" को फायरबेस firebase emulators:exec कमांड।

एमुलेटर हब REST API का उपयोग करें

चल रहे अनुकरणकर्ताओं की सूची बनाएं

वर्तमान में चल रहे एमुलेटर को सूचीबद्ध करने के लिए, एमुलेटर हब के /emulators एंडपॉइंट पर एक GET अनुरोध भेजें।

curl localhost:4400/emulators

परिणाम एक JSON ऑब्जेक्ट होगा जो सभी चल रहे एमुलेटर और उनके होस्ट/पोर्ट कॉन्फ़िगरेशन को सूचीबद्ध करेगा, उदाहरण के लिए:

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

पृष्ठभूमि फ़ंक्शन ट्रिगर सक्षम / अक्षम करें

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

स्थानीय फ़ंक्शन ट्रिगर को अस्थायी रूप से अक्षम करने के लिए, एमुलेटर हब के /functions/disableBackgroundTriggers एंडपॉइंट पर एक PUT अनुरोध भेजें।

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

परिणाम एक JSON ऑब्जेक्ट होगा जो वर्तमान स्थिति का विवरण देगा।

{
  "enabled": false
}

स्थानीय फ़ंक्शन ट्रिगर को अक्षम करने के बाद सक्षम करने के लिए, एमुलेटर हब के /functions/enableBackgroundTriggers एंडपॉइंट पर एक PUT अनुरोध भेजें।

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

परिणाम एक JSON ऑब्जेक्ट होगा जो वर्तमान स्थिति का विवरण देगा।

{
  "enabled": true
}

एमुलेटर एसडीके एकीकरण

इस खंड की तालिकाएं दर्शाती हैं कि कौन से एमुलेटर क्लाइंट और एडमिन एसडीके द्वारा समर्थित हैं। भविष्य का मतलब है कि एमुलेटर समर्थन की योजना बनाई गई है लेकिन अभी तक उपलब्ध नहीं है।

ग्राहक एसडीके उपलब्धता

एंड्रॉयड ऐप्पल प्लेटफॉर्म वेब फायरबेस यूआई
एंड्रॉयड
फायरबेस यूआई
आईओएस
फायरबेस यूआई
वेब
रीयलटाइम डेटाबेस 19.4.0 7.2.0 8.0.0 6.4.0 भविष्य एन/ए
क्लाउड फायरस्टोर 21.6.0 7.2.0 8.0.0 6.4.0 भविष्य एन/ए
प्रमाणीकरण 20.0.0 7.0.0 8.0.0 7.0.0 भविष्य भविष्य
घन संग्रहण 20.0.0 8.0.0 8.4.0 एन/ए एन/ए एन/ए
बादल कार्य 19.1.0 7.2.0 8.0.0 एन/ए एन/ए एन/ए
मेजबानी एन/ए एन/ए एन/ए एन/ए एन/ए एन/ए
एक्सटेंशन एन/ए एन/ए एन/ए एन/ए एन/ए एन/ए

व्यवस्थापक एसडीके उपलब्धता

नोड जावा अजगर जाओ
रीयलटाइम डेटाबेस 8.6.0 6.10.0 2.18.0 भविष्य
क्लाउड फायरस्टोर 8.0.0 6.10.0 3.0.0 1.0.0
प्रमाणीकरण 9.3.0 7.2.0 5.0.0 4.2.0
घन संग्रहण 9.8.0 भविष्य भविष्य भविष्य
बादल कार्य एन/ए एन/ए एन/ए एन/ए
मेजबानी एन/ए एन/ए एन/ए एन/ए
एक्सटेंशन एन/ए एन/ए एन/ए एन/ए