फायरबेस लोकल एमुलेटर सूट को विभिन्न प्रोटोटाइप और परीक्षण वातावरण के लिए स्थापित और कॉन्फ़िगर किया जा सकता है, एक बार के प्रोटोटाइप सत्र से लेकर उत्पादन-पैमाने पर निरंतर एकीकरण वर्कफ़्लो तक कुछ भी।
स्थानीय एमुलेटर सूट स्थापित करें
एमुलेटर सूट को स्थापित करने से पहले आपको आवश्यकता होगी:
एमुलेटर सूट स्थापित करने के लिए:
- फायरबेस सीएलआई स्थापित करें। अगर आपके पास पहले से Firebase CLI इंस्टॉल नहीं है, तो इसे अभी इंस्टॉल करें। एमुलेटर सूट का उपयोग करने के लिए आपको सीएलआई संस्करण 8.14.0 या उच्चतर की आवश्यकता होगी। आप निम्न कमांड का उपयोग करके जांच सकते हैं कि आपने कौन सा संस्करण स्थापित किया है:
firebase --version
- यदि आपने पहले से ऐसा नहीं किया है, तो वर्तमान कार्यशील निर्देशिका को फायरबेस प्रोजेक्ट के रूप में प्रारंभ करें, ऑनस्क्रीन संकेतों का पालन करके निर्दिष्ट करें कि कौन से उत्पादों का उपयोग करना है:
firebase init
- एमुलेटर सूट सेट करें। यह कमांड एक कॉन्फ़िगरेशन विज़ार्ड शुरू करता है जो आपको रुचि के एमुलेटर का चयन करने देता है, संबंधित एमुलेटर बाइनरी फ़ाइलों को डाउनलोड करता है, और डिफ़ॉल्ट उपयुक्त नहीं होने पर एमुलेटर पोर्ट सेट करता है।
firebase init emulators
एक बार एक एमुलेटर स्थापित हो जाने के बाद, कोई अपडेट जांच नहीं की जाती है और जब तक आप अपने फायरबेस सीएलआई संस्करण को अपडेट नहीं करते हैं, तब तक कोई अतिरिक्त स्वचालित डाउनलोड नहीं होगा।
एमुलेटर सूट कॉन्फ़िगर करें
आप वैकल्पिक रूप से एमुलेटर के नेटवर्क पोर्ट और सुरक्षा नियम परिभाषाओं के पथ को firebase.json
फ़ाइल में कॉन्फ़िगर कर सकते हैं:
-
firebase init emulators
चलाकर या मैन्युअल रूप सेfirebase.json
को संपादित करके एमुलेटर पोर्ट बदलें। - मैन्युअल रूप से
firebase.json
संपादित करके सुरक्षा नियम परिभाषाओं का पथ बदलें।
यदि आप इन सेटिंग्स को कॉन्फ़िगर नहीं करते हैं, तो एमुलेटर अपने डिफ़ॉल्ट पोर्ट पर सुनेंगे, और क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज एमुलेटर खुली डेटा सुरक्षा के साथ चलेंगे।
आज्ञा | विवरण |
---|---|
इनिट एमुलेटर | एक एमुलेटर आरंभीकरण विज़ार्ड प्रारंभ करें। इंस्टॉल किए जाने वाले एमुलेटर की पहचान करें और वैकल्पिक रूप से एमुलेटर पोर्ट सेटिंग्स निर्दिष्ट करें। init emulators गैर-विनाशकारी है; डिफ़ॉल्ट स्वीकार करना वर्तमान एमुलेटर कॉन्फ़िगरेशन को सुरक्षित रखेगा। |
पोर्ट विन्यास
प्रत्येक एमुलेटर आपकी मशीन पर एक पसंदीदा डिफ़ॉल्ट मान के साथ एक अलग पोर्ट से जुड़ता है।
एम्यूलेटर | डिफ़ॉल्ट पोर्ट |
---|---|
प्रमाणीकरण | 9099 |
एमुलेटर सूट यूआई | 4000 |
बादल कार्य | 5001 |
रीयलटाइम डेटाबेस | 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/ पर डाउनलोड करेगा यदि वे पहले से इंस्टॉल नहीं हैं।
| ||||||||||||
अनुकरणकर्ता: निष्पादन scriptpath | firebase.json में कॉन्फ़िगर किए गए scriptpath उत्पादों के लिए एमुलेटर शुरू करने के बाद स्क्रिप्टपथ पर स्क्रिप्ट चलाएँ। जब स्क्रिप्ट चलना समाप्त हो जाएगी तो एमुलेटर प्रक्रियाएं स्वचालित रूप से बंद हो जाएंगी।
|
firebase emulators:exec
विधि आम तौर पर निरंतर एकीकरण वर्कफ़्लो के लिए अधिक उपयुक्त होती है।
एमुलेटर डेटा निर्यात और आयात करें
आप साझा करने योग्य, सामान्य बेसलाइन डेटा सेट के रूप में उपयोग करने के लिए प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज एमुलेटर से डेटा निर्यात कर सकते हैं। इन डेटा सेटों को --import
ध्वज का उपयोग करके आयात किया जा सकता है, जैसा कि ऊपर वर्णित है।
अनुकरणकर्ता:निर्यात export_directory | प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर । चल रहे क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर इंस्टेंस से डेटा निर्यात करें। यदि यह पहले से मौजूद नहीं है तो निर्दिष्ट ऊपर वर्णित |
अपने सीआई सिस्टम के साथ एकीकृत करें
कंटेनरीकृत एमुलेटर सूट छवियों को चलाना
एक विशिष्ट सीआई सेटअप में कंटेनरों के साथ एम्यूलेटर सूट की स्थापना और विन्यास सीधा है।
ध्यान देने योग्य कुछ मुद्दे हैं:
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 | भविष्य | भविष्य | भविष्य |
बादल कार्य | एन/ए | एन/ए | एन/ए | एन/ए |
मेजबानी | एन/ए | एन/ए | एन/ए | एन/ए |
एक्सटेंशन | एन/ए | एन/ए | एन/ए | एन/ए |