Firebase लोकल एम्युलेटर सुइट को अलग-अलग प्रोटोटाइप और टेस्ट एनवायरमेंट के लिए इंस्टॉल और कॉन्फ़िगर किया जा सकता है. इनमें एक बार के प्रोटोटाइपिंग सेशन से लेकर प्रोडक्शन के लगातार इंटिग्रेशन वर्कफ़्लो तक, कुछ भी शामिल हैं.
लोकल एम्युलेटर सुइट इंस्टॉल करें
Emulator Suite को इंस्टॉल करने से पहले आपको इनकी ज़रूरत होगी:
एम्युलेटर सुइट को इंस्टॉल करने के लिए:
- Firebase सीएलआई इंस्टॉल करें.
अगर आपने पहले से Firebase सीएलआई इंस्टॉल नहीं किया है, तो
इसे अभी इंस्टॉल करें.
एम्युलेटर सुइट का इस्तेमाल करने के लिए, आपको सीएलआई वर्शन 8.14.0 या इसके बाद वाले वर्शन की ज़रूरत होगी. यह देखा जा सकता है कि आपने कौनसा वर्शन इंस्टॉल किया है. इसके लिए, यहां दिए गए निर्देश का इस्तेमाल करें:
firebase --version
- अगर आपने अभी तक ऐसा नहीं किया है, तो मौजूदा डायरेक्ट्री
को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, स्क्रीन पर दिए गए निर्देशों का पालन करके,
यह तय करें कि किन प्रॉडक्ट का इस्तेमाल करना है:
firebase init
- एम्युलेटर सुइट को सेट अप करें. इस निर्देश से एक कॉन्फ़िगरेशन विज़र्ड शुरू होता है. इससे, अपने पसंदीदा एम्युलेटर चुनने और उनसे जुड़ी एम्युलेटर बाइनरी फ़ाइलें डाउनलोड करने की सुविधा मिलती है. साथ ही, अगर डिफ़ॉल्ट सेटिंग सही न हों, तो एम्युलेटर पोर्ट सेट करने की सुविधा भी मिलती है.
firebase init emulators
एम्युलेटर इंस्टॉल हो जाने के बाद, अपडेट की कोई जांच नहीं की जाती है. साथ ही, जब तक Firebase का सीएलआई वर्शन अपडेट नहीं किया जाता, तब तक और अपने-आप डाउनलोड नहीं होगा.
एम्युलेटर सुइट को कॉन्फ़िगर करें
firebase.json
फ़ाइल में, एम्युलेटर के नेटवर्क पोर्ट और सुरक्षा के नियमों की परिभाषाओं का पाथ कॉन्फ़िगर किया जा सकता है:
firebase init emulators
चलाकर या मैन्युअल तरीके सेfirebase.json
में बदलाव करके, एम्युलेटर पोर्ट को बदलें.firebase.json
में मैन्युअल तरीके से बदलाव करके, सुरक्षा नियमों की परिभाषाओं का पाथ बदलें.
अगर ये सेटिंग कॉन्फ़िगर नहीं की जाती हैं, तो एम्युलेटर अपने डिफ़ॉल्ट पोर्ट पर काम करेंगे और Cloud Firestore, रीयलटाइम डेटाबेस, और 'Firebase के लिए Cloud Storage' एम्युलेटर, ओपन डेटा सुरक्षा के साथ चलेंगे.
आदेश | जानकारी |
---|---|
इनिट एम्युलेटर | एम्युलेटर शुरू करने वाला विज़र्ड शुरू करें. इंस्टॉल किए जाने वाले एम्युलेटर की पहचान करें और वैकल्पिक रूप से, एम्युलेटर पोर्ट की सेटिंग तय करें. init emulators नुकसान नहीं पहुंचाता है; डिफ़ॉल्ट स्वीकार करने से मौजूदा एम्युलेटर कॉन्फ़िगरेशन सुरक्षित रहेगा. |
पोर्ट कॉन्फ़िगरेशन
हर एम्युलेटर, आपकी पसंदीदा डिफ़ॉल्ट वैल्यू के साथ आपकी मशीन पर एक अलग पोर्ट से बाइंड करता है.
एमुलेटर | डिफ़ॉल्ट पोर्ट |
---|---|
पुष्टि करना | 9099 |
एम्युलेटर सुइट का यूज़र इंटरफ़ेस (यूआई) | 4000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Firebase के लिए Cloud Storage | 9199 |
Firebase होस्टिंग | 5000 |
Pub/Sub | 8085 |
प्रोजेक्ट आईडी का कॉन्फ़िगरेशन
एम्युलेटर को शुरू करने के आपके तरीके के आधार पर, किसी प्रोजेक्ट आईडी के लिए अलग-अलग Firebase प्रोजेक्ट आईडी या एक से ज़्यादा एम्युलेटर इंस्टेंस का इस्तेमाल करके एम्युलेटर के कई इंस्टेंस चलाए जा सकते हैं. ऐसे मामलों में, एम्युलेटर इंस्टेंस एक अलग एनवायरमेंट में चल रहे होते हैं.
आम तौर पर, एम्युलेटर के सभी शुरू करने के लिए एक प्रोजेक्ट आईडी सेट करना अच्छी बात है. इससे एम्युलेटर सुइट का यूज़र इंटरफ़ेस (यूआई), अलग-अलग प्रॉडक्ट एम्युलेटर, और किसी खास एम्युलेटर के चल रहे सभी इंस्टेंस सभी मामलों में सही तरीके से काम कर सकते हैं.
जब Local Emulator Suite एनवायरमेंट में एक से ज़्यादा प्रोजेक्ट आईडी का पता लगाता है, तो वह चेतावनियां जारी करता है. हालांकि, firebase.json
में singleProjectMode
कुंजी को false
पर सेट करके, ऐसा किया जा सकता है.
प्रोजेक्ट आईडी से जुड़े एलानों को देखा जा सकता है, ताकि इनमें जानकारी मेल न खाती हो:
- कमांड लाइन में डिफ़ॉल्ट प्रोजेक्ट. डिफ़ॉल्ट रूप से,
firebase init
याfirebase use
के साथ चुने गए प्रोजेक्ट से, शुरू होने पर प्रोजेक्ट आईडी लिया जाएगा. प्रोजेक्ट की सूची देखने और यह देखने के लिए कि कौनसा प्रोजेक्ट चुना गया है,firebase projects:list
का इस्तेमाल करें. - नियम यूनिट टेस्ट. इस प्रोजेक्ट आईडी की जानकारी अक्सर रूल यूनिट टेस्टिंग लाइब्रेरी के तरीकों
initializeTestEnvironment
याinitializeTestApp
के कॉल में दी जाती है. - कमांड लाइन
--project
फ़्लैग. Firebase सीएलआई--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 के विकल्प तय करना
रीयल टाइम डेटाबेस एम्युलेटर, Cloud Firestore एम्युलेटर, और 'Firebase के लिए Cloud Storage' एम्युलेटर का हिस्सा, Java पर आधारित हैं. इन्हें जेवीएम फ़्लैग की मदद से, एनवायरमेंट वैरिएबल JAVA_TOOL_OPTIONS
के ज़रिए पसंद के मुताबिक बनाया जा सकता है.
उदाहरण के लिए, अगर आपको Java हीप स्पेस से जुड़ी गड़बड़ियां मिलती हैं, तो Java हीप का ज़्यादा से ज़्यादा साइज़ 4 जीबी तक बढ़ाया जा सकता है:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
एक से ज़्यादा फ़्लैग को ऐसे कोट में रखा जा सकता है जिन्हें स्पेस से अलग किया गया हो, जैसे कि
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
. फ़्लैग सिर्फ़ एम्युलेटर के Java-आधारित कॉम्पोनेंट पर असर डालते हैं और Firebase सीएलआई के दूसरे हिस्सों, जैसे कि एम्युलेटर सुइट यूज़र इंटरफ़ेस (यूआई) पर कोई असर नहीं डालते.
स्टार्ट अप एम्युलेटर
एम्युलेटर को तब तक चलाया जा सकता है, जब तक कि उसे मैन्युअल तरीके से खत्म नहीं कर दिया जाता. इसके अलावा, तय की गई टेस्ट स्क्रिप्ट की अवधि तक चलाने के लिए, एम्युलेटर अपने-आप बंद हो जाते हैं.
आदेश | जानकारी | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emulator:शुरू करें | firebase.json में कॉन्फ़िगर किए गए Firebase प्रॉडक्ट के लिए, एम्युलेटर शुरू करें.
जब तक पूरी तरह से बंद नहीं किया जाता, तब तक एम्युलेटर प्रोसेस चलती रहेंगी. emulators:start को कॉल करने पर, एम्युलेटर पहले से इंस्टॉल नहीं होने पर, एम्युलेटर ~/.cache/firebase/emulators/ में डाउनलोड हो जाएंगे.
|
||||||||||||
सिम्युलेटर:एक्सपेरिमेंट scriptpath | firebase.json में कॉन्फ़िगर किए गए Firebase प्रॉडक्ट के लिए, एम्युलेटर शुरू करने के बाद
scriptpath पर स्क्रिप्ट चलाएं. स्क्रिप्ट के चलने के बाद, एम्युलेटर की प्रोसेस
अपने-आप बंद हो जाएंगी.
|
आम तौर पर, इंटिग्रेशन के वर्कफ़्लो को जारी रखने के लिए, firebase emulators:exec
तरीका ज़्यादा सही होता है.
एम्युलेटर डेटा को एक्सपोर्ट और इंपोर्ट करें
आप पुष्टि, Cloud Firestore, रीयलटाइम डेटाबेस, और Firebase एम्युलेटर के लिए Cloud Storage से डेटा एक्सपोर्ट कर सकते हैं, ताकि इन्हें शेयर किए जा सकने वाले और सामान्य बेसलाइन डेटा सेट के तौर पर इस्तेमाल किया जा सके. जैसा कि ऊपर बताया गया है, ये डेटा सेट --import
फ़्लैग का इस्तेमाल करके इंपोर्ट किए जा सकते हैं.
सिम्युलेटर:एक्सपोर्ट करें export_directory |
पुष्टि करना, Cloud Firestore, रीयलटाइम डेटाबेस या Firebase एम्युलेटर के लिए Cloud Storage.
मौजूदा Cloud Firestore, रीयलटाइम डेटाबेस या Firebase एम्युलेटर इंस्टेंस के लिए Cloud Storage से डेटा एक्सपोर्ट करें. अगर मौजूद
ऊपर बताए गए
|
अपने सीआई सिस्टम से इंटिग्रेट करें
कंटेनर के तौर पर इस्तेमाल किए जा रहे एम्युलेटर सुइट की इमेज
सामान्य सीआई सेटअप में कंटेनर के साथ Emulator Suite को इंस्टॉल और कॉन्फ़िगरेशन करना आसान है.
इन बातों पर ध्यान दें:
JAR फ़ाइलें,
~/.cache/firebase/emulators/
पर इंस्टॉल और कैश मेमोरी में सेव की जाती हैं.- इस पाथ को अपने सीआई कैश कॉन्फ़िगरेशन में जोड़ें, ताकि बार-बार डाउनलोड न हो.
अगर आपके पास डेटा स्टोर करने की जगह में
firebase.json
फ़ाइल नहीं है, तो आपकोemulators:start
याemulators:exec
कमांड में एक कमांड लाइन आर्ग्युमेंट जोड़ना होगा. इससे यह तय किया जा सकेगा कि कौनसे एम्युलेटर इस्तेमाल करने चाहिए. उदाहरण के लिए,--only functions,firestore
.
पुष्टि करने वाला टोकन जनरेट करें (सिर्फ़ होस्टिंग एम्युलेटर)
अगर आपका लगातार इंटिग्रेशन वर्कफ़्लो, Firebase होस्टिंग पर निर्भर करता है, तो आपको
firebase emulators:exec
चलाने के लिए, टोकन का इस्तेमाल करके लॉग इन करना होगा. दूसरे एम्युलेटर के लिए लॉगिन की ज़रूरत नहीं होती.
टोकन जनरेट करने के लिए, अपने लोकल एनवायरमेंट पर firebase login:ci
चलाएं. यह काम किसी सीआई सिस्टम से नहीं किया जाना चाहिए. पुष्टि करने के लिए निर्देशों का पालन करें. आपको हर प्रोजेक्ट के लिए यह चरण सिर्फ़ एक बार करना होगा, क्योंकि टोकन सभी बिल्ड के लिए मान्य होगा. टोकन को पासवर्ड की तरह इस्तेमाल किया जाना चाहिए. इसलिए, यह पक्का कर लें कि यह पासवर्ड गोपनीय रखा गया हो.
अगर आपके सीआई एनवायरमेंट की मदद से, ऐसे एनवायरमेंट वैरिएबल तय किए जा सकते हैं जिनका इस्तेमाल बिल्ड स्क्रिप्ट में किया जा सकता है, तो FIREBASE_TOKEN
नाम का एनवायरमेंट वैरिएबल बनाएं. इसकी वैल्यू, ऐक्सेस टोकन स्ट्रिंग होगी. Firebase सीएलआई, FIREBASE_TOKEN
एनवायरमेंट वैरिएबल को अपने-आप चुनेगा और एम्युलेटर सही तरीके से शुरू हो जाएगा.
आखिरी उपाय के तौर पर, टोकन को अपनी बिल्ड स्क्रिप्ट में शामिल करें. हालांकि, यह पक्का करें कि
गैर-भरोसेमंद पक्षों के पास ऐक्सेस न हो. हार्ड कोड किए गए इस तरीके के लिए, firebase emulators:exec
कमांड में --token "YOUR_TOKEN_STRING_HERE"
को जोड़ा जा सकता है.
एम्युलेटर हब 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
}
}
बैकग्राउंड फ़ंक्शन ट्रिगर को चालू / बंद करें
कुछ स्थितियों में आपको लोकल फ़ंक्शन और एक्सटेंशन ट्रिगर को कुछ समय के लिए बंद करना होगा. उदाहरण के लिए, हो सकता है कि आप Cloud Functions या एक्सटेंशन एम्युलेटर में चल रहे किसी भी onDelete
फ़ंक्शन को ट्रिगर किए बिना, Cloud Firestore एम्युलेटर का पूरा डेटा मिटाना चाहें.
लोकल फ़ंक्शन ट्रिगर को कुछ समय के लिए बंद करने के लिए, एम्युलेटर हब के /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
}
एम्युलेटर SDK टूल के इंटिग्रेशन
इस सेक्शन में दी गई टेबल से पता चलता है कि क्लाइंट और एडमिन SDK टूल के साथ कौनसे एम्युलेटर काम करते हैं. आने वाले समय का मतलब है कि एम्युलेटर के लिए सहायता योजना बनाई गई है लेकिन अभी उपलब्ध नहीं है.
क्लाइंट SDK टूल की उपलब्धता
Android | Apple प्लैटफ़ॉर्म | वेब |
Firebase का यूज़र इंटरफ़ेस (यूआई) Android |
Firebase यूज़र इंटरफ़ेस (यूआई) iOS |
Firebase का यूज़र इंटरफ़ेस (यूआई) वेब |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | फ़्यूचर | लागू नहीं |
Cloud Firestore | 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 |
Firebase के लिए Cloud Storage | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | लागू नहीं |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | लागू नहीं | लागू नहीं | लागू नहीं |
Hosting | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
एक्सटेंशन | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
एडमिन SDK टूल की उपलब्धता
नोड | Java | Python | शुरू करें | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | फ़्यूचर |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
पुष्टि करना | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Firebase के लिए Cloud Storage | 9.8.0 | फ़्यूचर | फ़्यूचर | फ़्यूचर |
Cloud Functions | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
Hosting | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
एक्सटेंशन | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |