फायरबेस लोकल एम्यूलेटर सूट को अलग-अलग प्रोटोटाइप और परीक्षण वातावरण के लिए स्थापित और कॉन्फ़िगर किया जा सकता है, एक बार के प्रोटोटाइप सत्र से लेकर उत्पादन-पैमाने पर निरंतर एकीकरण वर्कफ़्लो तक कुछ भी।
स्थानीय एमुलेटर सूट स्थापित करें
एमुलेटर सूट स्थापित करने से पहले आपको आवश्यकता होगी:
एमुलेटर सूट स्थापित करने के लिए:
- फायरबेस सीएलआई स्थापित करें। यदि आपके पास पहले से Firebase CLI स्थापित नहीं है, तो इसे अभी स्थापित करें । एमुलेटर सूट का उपयोग करने के लिए आपको सीएलआई संस्करण 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 और वेब प्रोजेक्ट को कॉन्फ़िगर करते समय आपके द्वारा सेट किए गए प्लेटफ़ॉर्म-विशिष्ट प्रोजेक्ट ID कॉन्फ़िगरेशन की भी जाँच करें।
सुरक्षा नियम विन्यास
एमुलेटर 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/
पर स्थापित और कैश की जाती हैं।- बार-बार डाउनलोड से बचने के लिए आप इस पथ को अपने 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
कमांड।
एमुलेटर हब रेस्ट एपीआई का उपयोग करें
चल रहे एमुलेटर की सूची बनाएं
वर्तमान में चल रहे इम्यूलेटर्स को सूचीबद्ध करने के लिए, इम्यूलेटर हब के /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
}
एमुलेटर एसडीके एकीकरण
इस खंड की तालिकाएँ बताती हैं कि कौन से एमुलेटर क्लाइंट और एडमिन एसडीके द्वारा समर्थित हैं। भविष्य का अर्थ है एमुलेटर समर्थन की योजना है लेकिन अभी तक उपलब्ध नहीं है।
क्लाइंट एसडीके उपलब्धता
एंड्रॉयड | Apple प्लेटफॉर्म | वेब | फायरबेस यूआई एंड्रॉयड | फायरबेस यूआई आईओएस | फायरबेस यूआई वेब | |
---|---|---|---|---|---|---|
रीयलटाइम डेटाबेस | 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 | लागू नहीं | लागू नहीं | लागू नहीं |
मेजबानी | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
एक्सटेंशन | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
व्यवस्थापक एसडीके उपलब्धता
नोड | जावा | अजगर | जाना | |
---|---|---|---|---|
रीयलटाइम डेटाबेस | 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 | भविष्य | भविष्य | भविष्य |
क्लाउड फ़ंक्शंस | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
मेजबानी | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
एक्सटेंशन | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |