फायरबेस लोकल एमुलेटर सूट को विभिन्न प्रोटोटाइप और परीक्षण वातावरणों के लिए स्थापित और कॉन्फ़िगर किया जा सकता है, एक-ऑफ़ प्रोटोटाइप सत्र से लेकर उत्पादन-पैमाने पर निरंतर एकीकरण वर्कफ़्लो तक कुछ भी।
स्थानीय एम्यूलेटर सुइट स्थापित करें
एम्यूलेटर सूट स्थापित करने से पहले आपको इसकी आवश्यकता होगी:
एम्यूलेटर सुइट स्थापित करने के लिए:
- फायरबेस सीएलआई स्थापित करें। यदि आपके पास पहले से फायरबेस सीएलआई स्थापित नहीं है, तो इसे अभी स्थापित करें । एम्यूलेटर सुइट का उपयोग करने के लिए आपको सीएलआई संस्करण 8.14.0 या उच्चतर की आवश्यकता होगी। आप निम्न आदेश का उपयोग करके जांच सकते हैं कि आपने कौन सा संस्करण स्थापित किया है:
firebase --version
- यदि आपने पहले से ऐसा नहीं किया है, तो वर्तमान कार्यशील निर्देशिका को फायरबेस प्रोजेक्ट के रूप में आरंभ करें, ऑनस्क्रीन संकेतों का पालन करते हुए निर्दिष्ट करें कि किन उत्पादों का उपयोग करना है:
firebase init
- एम्यूलेटर सुइट सेट करें. यह कमांड एक कॉन्फ़िगरेशन विज़ार्ड शुरू करता है जो आपको रुचि के एमुलेटर का चयन करने, संबंधित एमुलेटर बाइनरी फ़ाइलों को डाउनलोड करने और डिफ़ॉल्ट उपयुक्त नहीं होने पर एमुलेटर पोर्ट सेट करने देता है।
firebase init emulators
एक बार एमुलेटर इंस्टॉल हो जाने के बाद, कोई अपडेट जांच नहीं की जाती है और जब तक आप अपना फायरबेस सीएलआई संस्करण अपडेट नहीं करते तब तक कोई अतिरिक्त स्वचालित डाउनलोड नहीं होगा।
एमुलेटर सूट कॉन्फ़िगर करें
आप वैकल्पिक रूप से firebase.json
फ़ाइल में एमुलेटर के नेटवर्क पोर्ट और सुरक्षा नियम परिभाषाओं के पथ को कॉन्फ़िगर कर सकते हैं:
-
firebase init emulators
चलाकर याfirebase.json
मैन्युअल रूप से संपादित करके एमुलेटर पोर्ट बदलें। -
firebase.json
मैन्युअल रूप से संपादित करके सुरक्षा नियम परिभाषाओं का पथ बदलें।
यदि आप इन सेटिंग्स को कॉन्फ़िगर नहीं करते हैं, तो एमुलेटर अपने डिफ़ॉल्ट पोर्ट पर सुनेंगे, और फायरबेस एमुलेटर के लिए क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज खुली डेटा सुरक्षा के साथ चलेंगे।
आज्ञा | विवरण |
---|---|
init अनुकरणकर्ता | एक एमुलेटर इनिशियलाइज़ेशन विज़ार्ड प्रारंभ करें। स्थापित किए जाने वाले एमुलेटर की पहचान करें और वैकल्पिक रूप से एमुलेटर पोर्ट सेटिंग्स निर्दिष्ट करें। init emulators गैर-विनाशकारी है; डिफ़ॉल्ट स्वीकार करने से वर्तमान एमुलेटर कॉन्फ़िगरेशन सुरक्षित रहेगा। |
पोर्ट कॉन्फ़िगरेशन
प्रत्येक एमुलेटर पसंदीदा डिफ़ॉल्ट मान के साथ आपकी मशीन पर एक अलग पोर्ट से जुड़ता है।
एम्यूलेटर | डिफ़ॉल्ट पोर्ट |
---|---|
प्रमाणीकरण | 9099 |
एम्यूलेटर सुइट यूआई | 4000 |
क्लाउड फ़ंक्शंस | 5001 |
इवेंटआर्क | 9299 |
रीयलटाइम डेटाबेस | 9000 |
क्लाउड फायरस्टोर | 8080 |
फायरबेस के लिए क्लाउड स्टोरेज | 9199 |
फायरबेस होस्टिंग | 5000 |
पब/उप | 8085 |
प्रोजेक्ट आईडी कॉन्फ़िगरेशन
आप एमुलेटर कैसे शुरू करते हैं, इसके आधार पर, आप किसी दिए गए प्रोजेक्ट आईडी के लिए अलग-अलग फायरबेस प्रोजेक्ट आईडी या एकाधिक एमुलेटर इंस्टेंस का उपयोग करके एक एमुलेटर के कई इंस्टेंस चला सकते हैं। ऐसे मामलों में, एमुलेटर इंस्टेंसेस एक अलग वातावरण में चल रहे हैं।
आम तौर पर सभी एमुलेटर इनवोकेशन के लिए एक प्रोजेक्ट आईडी सेट करना एक अच्छा अभ्यास है, ताकि एमुलेटर सूट यूआई, विभिन्न उत्पाद एमुलेटर, और एक विशेष एमुलेटर के सभी चल रहे इंस्टेंस सभी मामलों में सही ढंग से संचार कर सकें।
जब स्थानीय एमुलेटर सूट वातावरण में एकाधिक प्रोजेक्ट आईडी का पता लगाता है तो चेतावनी जारी करता है, हालांकि आप अपने firebase.json
में singleProjectMode
कुंजी को false
पर सेट करके इस व्यवहार को ओवरराइड कर सकते हैं।
आप बेमेल के लिए प्रोजेक्ट आईडी घोषणा(घोषणाओं) की जांच कर सकते हैं:
- कमांड लाइन में डिफ़ॉल्ट प्रोजेक्ट. डिफ़ॉल्ट रूप से, प्रोजेक्ट आईडी स्टार्टअप पर
firebase init
याfirebase use
के साथ चयनित प्रोजेक्ट से ली जाएगी। परियोजनाओं की सूची देखने के लिए (और देखें कि कौन सा चयनित है)firebase projects:list
उपयोग करें। - नियम इकाई परीक्षण. प्रोजेक्ट आईडी को अक्सर रूल्स यूनिट टेस्टिंग लाइब्रेरी विधियों
initializeTestEnvironment
याinitializeTestApp
पर कॉल में निर्दिष्ट किया जाता है। - कमांड लाइन
--project
फ़्लैग. फायरबेस सीएलआई--project
फ़्लैग को पास करने से डिफ़ॉल्ट प्रोजेक्ट ओवरराइड हो जाता है। आपको यह सुनिश्चित करना होगा कि इकाई परीक्षण और ऐप आरंभीकरण में ध्वज का मान प्रोजेक्ट आईडी से मेल खाता हो।
अपने Apple प्लेटफ़ॉर्म , Android और वेब प्रोजेक्ट को कॉन्फ़िगर करते समय आपके द्वारा सेट किए गए प्लेटफ़ॉर्म-विशिष्ट प्रोजेक्ट आईडी कॉन्फ़िगरेशन की भी जाँच करें।
सुरक्षा नियम विन्यास
एमुलेटर 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": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"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 उत्पादों के लिए एमुलेटर प्रारंभ करें। एमुलेटर प्रक्रियाएं स्पष्ट रूप से बंद होने तक चलती रहेंगी। emulators:start एमुलेटर को ~/.cache/firebase/emulators/ पर डाउनलोड कर देगा यदि वे पहले से इंस्टॉल नहीं हैं।
| ||||||||||||
अनुकरणकर्ता: कार्यकारी scriptpath | firebase.json में कॉन्फ़िगर किए गए Firebase उत्पादों के लिए एमुलेटर प्रारंभ करने के बाद स्क्रिप्ट को scriptpath पर चलाएँ। जब स्क्रिप्ट चलना समाप्त हो जाएगी तो एम्यूलेटर प्रक्रियाएं स्वचालित रूप से बंद हो जाएंगी।
|
firebase emulators:exec
विधि आम तौर पर निरंतर एकीकरण वर्कफ़्लो के लिए अधिक उपयुक्त है।
एमुलेटर डेटा निर्यात और आयात करें
आप साझा करने योग्य, सामान्य बेसलाइन डेटा सेट के रूप में उपयोग करने के लिए फायरबेस एमुलेटर के लिए प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज से डेटा निर्यात कर सकते हैं। जैसा कि ऊपर वर्णित है, इन डेटा सेटों को --import
ध्वज का उपयोग करके आयात किया जा सकता है।
अनुकरणकर्ता: निर्यात export_directory | फायरबेस एमुलेटर के लिए प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज । फायरबेस एमुलेटर इंस्टेंस के लिए चल रहे क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज से डेटा निर्यात करें। निर्दिष्ट आप ऊपर वर्णित |
अपने सीआई सिस्टम के साथ एकीकृत करें
कंटेनरीकृत एमुलेटर सुइट छवियाँ चलाना
एक विशिष्ट सीआई सेटअप में कंटेनरों के साथ एमुलेटर सूट की स्थापना और कॉन्फ़िगरेशन सीधा है।
ध्यान देने योग्य कुछ मुद्दे हैं:
JAR फ़ाइलें
~/.cache/firebase/emulators/
पर स्थापित और कैश की जाती हैं।- बार-बार डाउनलोड से बचने के लिए आप इस पथ को अपने सीआई कैश कॉन्फ़िगरेशन में जोड़ना चाह सकते हैं।
यदि आपके रिपॉजिटरी में
firebase.json
फ़ाइल नहीं है, तो आपकोemulators:start
याemulators:exec
कमांड में एक कमांड लाइन तर्क जोड़ना होगा ताकि यह निर्दिष्ट किया जा सके कि कौन से एमुलेटर शुरू किए जाने चाहिए। उदाहरण के लिए,
--only functions,firestore
।
एक ऑथ टोकन जनरेट करें (केवल होस्टिंग एम्यूलेटर)
यदि आपका निरंतर एकीकरण वर्कफ़्लो फ़ायरबेस होस्टिंग पर निर्भर करता है, तो आपको firebase emulators:exec
। अन्य एमुलेटरों को लॉगिन की आवश्यकता नहीं है।
टोकन जनरेट करने के लिए, अपने स्थानीय परिवेश पर firebase login:ci
चलाएँ; इसे सीआई प्रणाली से निष्पादित नहीं किया जाना चाहिए। प्रमाणित करने के लिए निर्देशों का पालन करें. आपको यह चरण प्रति प्रोजेक्ट केवल एक बार करने की आवश्यकता होगी, क्योंकि टोकन सभी बिल्ड में मान्य होगा। टोकन को पासवर्ड की तरह माना जाना चाहिए; सुनिश्चित करें कि इसे गुप्त रखा जाए।
यदि आपका सीआई वातावरण आपको पर्यावरण चर निर्दिष्ट करने की अनुमति देता है जिसका उपयोग बिल्ड स्क्रिप्ट में किया जा सकता है, तो बस FIREBASE_TOKEN
नामक एक पर्यावरण चर बनाएं, जिसका मान एक्सेस टोकन स्ट्रिंग होगा। फायरबेस सीएलआई स्वचालित रूप से FIREBASE_TOKEN
पर्यावरण चर को उठाएगा और एमुलेटर ठीक से शुरू हो जाएगा।
अंतिम उपाय के रूप में, आप बस अपनी बिल्ड स्क्रिप्ट में टोकन शामिल कर सकते हैं, लेकिन सुनिश्चित करें कि अविश्वसनीय पार्टियों के पास पहुंच न हो। इस हार्ड-कोडित दृष्टिकोण के लिए, आप firebase emulators:exec
कमांड में --token "YOUR_TOKEN_STRING_HERE"
जोड़ सकते हैं।
एम्यूलेटर हब रेस्ट एपीआई का उपयोग करें
चल रहे अनुकरणकर्ताओं की सूची बनाएं
वर्तमान में चल रहे एमुलेटर को सूचीबद्ध करने के लिए, एमुलेटर हब के /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 | भविष्य | 4.7.2 |
फायरबेस के लिए क्लाउड स्टोरेज | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | एन/ए |
क्लाउड फ़ंक्शंस | 19.1.0 | 7.2.0 | 8.0.0 | एन/ए | एन/ए | एन/ए |
मेजबानी | एन/ए | एन/ए | एन/ए | एन/ए | एन/ए | एन/ए |
एक्सटेंशन | एन/ए | एन/ए | एन/ए | एन/ए | एन/ए | एन/ए |
व्यवस्थापक SDK उपलब्धता
नोड | जावा | अजगर | जाना | |
---|---|---|---|---|
रीयलटाइम डेटाबेस | 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 | भविष्य | भविष्य | भविष्य |
क्लाउड फ़ंक्शंस | एन/ए | एन/ए | एन/ए | एन/ए |
मेजबानी | एन/ए | एन/ए | एन/ए | एन/ए |
एक्सटेंशन | एन/ए | एन/ए | एन/ए | एन/ए |