Firebase Local Emulator Suite को अलग-अलग प्रोटोटाइप और टेस्टिंग एनवायरमेंट के लिए इंस्टॉल और कॉन्फ़िगर किया जा सकता है. जैसे, एक बार में होने वाले प्रोटोटाइपिंग सेशन से लेकर, प्रोडक्शन-स्केल के लिए लगातार इंटिग्रेशन वाले वर्कफ़्लो तक.
Local Emulator Suite इंस्टॉल करना
Emulator Suite इंस्टॉल करने से पहले, आपको इन चीज़ों की ज़रूरत होगी:
Emulator Suite इंस्टॉल करने के लिए:
- Firebase सीएलआई इंस्टॉल करें.
अगर आपके पास पहले से Firebase CLI इंस्टॉल नहीं है, तो
इसे अभी इंस्टॉल करें.
Emulator Suite का इस्तेमाल करने के लिए, आपको सीएलआई का 8.14.0 या इसके बाद का वर्शन चाहिए. इस निर्देश का इस्तेमाल करके, यह पता लगाया जा सकता है कि आपने कौनसा वर्शन इंस्टॉल किया है:
firebase --version
- अगर आपने अब तक ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, स्क्रीन पर दिखने वाले निर्देशों का पालन करके यह तय करें कि किन प्रॉडक्ट का इस्तेमाल करना है:
firebase init
- Emulator Suite सेट अप करें. यह कमांड, कॉन्फ़िगरेशन विज़र्ड को शुरू करता है. इसकी मदद से, अपनी पसंद के एमुलेटर चुने जा सकते हैं, उनसे जुड़ी एमुलेटर बाइनरी फ़ाइलें डाउनलोड की जा सकती हैं, और डिफ़ॉल्ट पोर्ट सही न होने पर एमुलेटर पोर्ट सेट किए जा सकते हैं.
firebase init emulators
किसी एमुलेटर को इंस्टॉल करने के बाद, अपडेट की जांच नहीं की जाती. साथ ही, Firebase CLI का वर्शन अपडेट करने तक, कोई और अपडेट अपने-आप डाउनलोड नहीं होगा.
Emulator Suite कॉन्फ़िगर करना
आपके पास firebase.json
फ़ाइल में, सुरक्षा नियमों की परिभाषाओं के लिए, एमुलेटर के नेटवर्क पोर्ट और पाथ को कॉन्फ़िगर करने का विकल्प है:
firebase init emulators
को चलाकर याfirebase.json
में मैन्युअल तरीके से बदलाव करके, एमुलेटर पोर्ट बदलें.firebase.json
में मैन्युअल तरीके से बदलाव करके, सुरक्षा नियमों की परिभाषाओं का पाथ बदलें.
अगर इन सेटिंग को कॉन्फ़िगर नहीं किया जाता है, तो एमुलेटर अपने डिफ़ॉल्ट पोर्ट पर सुनेंगे. साथ ही, Cloud Firestore, Realtime Database, और Cloud Storage for Firebase एमुलेटर, ओपन डेटा सिक्योरिटी के साथ चलेंगे.
आदेश | ब्यौरा |
---|---|
init emulators | एम्युलेटर को शुरू करने वाला विज़र्ड शुरू करें. इंस्टॉल किए जाने वाले एम्युलेटर की पहचान करें और एम्युलेटर पोर्ट की सेटिंग तय करें. हालांकि, ऐसा करना ज़रूरी नहीं है. init emulators से कोई नुकसान नहीं होता. डिफ़ॉल्ट सेटिंग स्वीकार करने पर, एमुलेटर का मौजूदा कॉन्फ़िगरेशन सुरक्षित रहेगा. |
पोर्ट कॉन्फ़िगरेशन
हर एमुलेटर, आपकी मशीन पर किसी अलग पोर्ट से बंधा होता है. साथ ही, इसमें डिफ़ॉल्ट तौर पर एक पसंदीदा वैल्यू सेट होती है.
एम्युलेटर | डिफ़ॉल्ट पोर्ट |
---|---|
Authentication | 9099 |
App Hosting | 5002 |
Emulator Suite UI | 4000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5000 |
Pub/Sub | 8085 |
प्रोजेक्ट आईडी का कॉन्फ़िगरेशन
एम्युलेटर को शुरू करने के तरीके के आधार पर, अलग-अलग Firebase प्रोजेक्ट आईडी का इस्तेमाल करके, एम्युलेटर के कई इंस्टेंस चलाए जा सकते हैं. इसके अलावा, किसी प्रोजेक्ट आईडी के लिए, एम्युलेटर के कई इंस्टेंस भी चलाए जा सकते हैं. ऐसे मामलों में, एमुलेटर इंस्टेंस अलग-अलग एनवायरमेंट में चल रहे होते हैं.
आम तौर पर, सभी एमुलेटर के इस्तेमाल के लिए एक प्रोजेक्ट आईडी सेट करना अच्छा होता है. इससे Emulator Suite UI, अलग-अलग प्रॉडक्ट एमुलेटर, और किसी खास एमुलेटर के सभी चल रहे इंस्टेंस, सभी मामलों में सही तरीके से कम्यूनिकेट कर सकते हैं.
Local Emulator Suite, एनवायरमेंट में एक से ज़्यादा प्रोजेक्ट आईडी का पता चलने पर चेतावनियां जारी करता है. हालांकि, firebase.json
में singleProjectMode
बटन को false
पर सेट करके, इस व्यवहार को बदला जा सकता है.
प्रोजेक्ट आईडी के एलान में, इनमें मेल न खाने की वजह से गड़बड़ी हो सकती है:
- कमांड लाइन में डिफ़ॉल्ट प्रोजेक्ट. डिफ़ॉल्ट रूप से, प्रोजेक्ट आईडी,
firebase init
याfirebase use
से चुने गए प्रोजेक्ट से, स्टार्टअप पर लिया जाएगा. प्रोजेक्ट की सूची देखने और यह देखने के लिए कि कौनसा प्रोजेक्ट चुना गया है,firebase projects:list
का इस्तेमाल करें. - नियमों के यूनिट टेस्ट. प्रोजेक्ट आईडी, अक्सर Rules
Unit Testing लाइब्रेरी के तरीकों
initializeTestEnvironment
याinitializeTestApp
के कॉल में बताया जाता है. - कमांड लाइन
--project
फ़्लैग. Firebase CLI--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 के विकल्पों की जानकारी देना
Realtime Database एमुलेटर, Cloud Firestore एमुलेटर, और Cloud Storage for Firebase एमुलेटर का कुछ हिस्सा, Java पर आधारित है. इसे एनवायरमेंट वैरिएबल JAVA_TOOL_OPTIONS
की मदद से, JVM फ़्लैग के हिसाब से बनाया जा सकता है.
उदाहरण के लिए, अगर आपको Java ढेर के स्पेस से जुड़ी गड़बड़ियां आ रही हैं, तो Java ढेर का साइज़ 4 जीबी तक बढ़ाया जा सकता है:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
एक से ज़्यादा फ़्लैग को कोटेशन में डाला जा सकता है और उन्हें स्पेस से अलग किया जा सकता है, जैसे कि
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
. फ़्लैग का असर, सिर्फ़ एमुलेटर के Java-based कॉम्पोनेंट पर पड़ता है. इनका असर Firebase CLI के दूसरे हिस्सों पर नहीं पड़ता, जैसे कि Emulator Suite UI.
एम्युलेटर शुरू करना
एमुलेटर को मैन्युअल तरीके से बंद किए जाने तक या तय की गई टेस्ट स्क्रिप्ट के दौरान चलाने के लिए सेट किया जा सकता है. इसके बाद, वे अपने-आप बंद हो जाएंगे.
आदेश | ब्यौरा | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emulators:start | firebase.json में कॉन्फ़िगर किए गए Firebase प्रॉडक्ट के लिए, एमुलेटर शुरू करें.
एमुलेटर प्रोसेस तब तक चलती रहेंगी, जब तक उन्हें साफ़ तौर पर बंद नहीं किया जाता. emulators:start को कॉल करने पर, एम्युलेटर ~/.cache/firebase/emulators/ में डाउनलोड हो जाएंगे. ऐसा तब होगा, जब वे पहले से इंस्टॉल न हों.
|
||||||||||||
emulators:exec scriptpath | firebase.json में कॉन्फ़िगर किए गए Firebase प्रॉडक्ट के एमुलेटर शुरू करने के बाद, scriptpath पर स्क्रिप्ट चलाएं. स्क्रिप्ट के चलने के बाद, एमुलेटर प्रोसेस अपने-आप बंद हो जाएंगी.
|
आम तौर पर, firebase emulators:exec
तरीका, लगातार इंटिग्रेशन वाले वर्कफ़्लो के लिए ज़्यादा सही होता है.
एमुलेटर का डेटा एक्सपोर्ट और इंपोर्ट करना
Authentication, Cloud Firestore, Realtime Database, और
Cloud Storage for Firebase एमुलेटर से डेटा एक्सपोर्ट किया जा सकता है, ताकि उसे शेयर किए जा सकने वाले सामान्य बेसलाइन डेटा के तौर पर इस्तेमाल किया जा सके. इन डेटा सेट को ऊपर बताए गए तरीके से, --import
फ़्लैग का इस्तेमाल करके इंपोर्ट किया जा सकता है.
emulators:export export_directory |
Authentication, Cloud Firestore, Realtime Database या Cloud Storage for Firebase एमुलेटर.
चल रहे Cloud Firestore, Realtime Database या Cloud Storage for Firebase
एमुलेटर इंस्टेंस से डेटा एक्सपोर्ट करें. अगर तय किया गया
ऊपर बताए गए |
अपने सीआई सिस्टम के साथ इंटिग्रेट करना
कंटेनर में मौजूद Emulator Suite इमेज चलाना
आम तौर पर, सीआई सेटअप में कंटेनर के साथ Emulator Suite को इंस्टॉल और कॉन्फ़िगर करना आसान है.
ध्यान देने वाली कुछ बातें:
JAR फ़ाइलें
~/.cache/firebase/emulators/
पर इंस्टॉल और कैश मेमोरी में सेव की जाती हैं.- बार-बार डाउनलोड होने से बचने के लिए, इस पाथ को सीआई कैश मेमोरी में डेटा सेव किए जाने की सेटिंग में जोड़ा जा सकता है.
अगर आपकी रिपॉज़िटरी में
firebase.json
फ़ाइल नहीं है, तो आपको यह बताने के लिए कि कौनसे एमुलेटर शुरू करने हैं,emulators:start
याemulators:exec
कमांड में कमांड लाइन आर्ग्युमेंट जोड़ना होगा. उदाहरण के लिए,--only functions,firestore
.
पुष्टि करने वाला टोकन जनरेट करना (सिर्फ़ होस्टिंग एमुलेटर के लिए)
अगर आपके सीआई (कंटिन्यूअस इंटिग्रेशन) वर्कफ़्लो, Firebase Hosting पर निर्भर हैं, तो firebase emulators:exec
को चलाने के लिए, आपको टोकन का इस्तेमाल करके लॉग इन करना होगा. अन्य इम्यूलेटर के लिए, लॉगिन करने की ज़रूरत नहीं होती.
टोकन जनरेट करने के लिए, अपने लोकल एनवायरमेंट पर firebase login:ci
चलाएं. इसे किसी सीआई सिस्टम से नहीं चलाना चाहिए. पुष्टि करने के लिए निर्देशों का पालन करें. आपको हर प्रोजेक्ट के लिए, यह चरण सिर्फ़ एक बार पूरा करना होगा. ऐसा इसलिए, क्योंकि टोकन सभी बिल्ड के लिए मान्य होगा. टोकन को पासवर्ड की तरह ही इस्तेमाल किया जाना चाहिए. पक्का करें कि इसे किसी को न बताया जाए.
अगर आपके सीआई एनवायरमेंट में, ऐसे एनवायरमेंट वैरिएबल तय करने की अनुमति है जिनका इस्तेमाल बिल्ड स्क्रिप्ट में किया जा सकता है, तो FIREBASE_TOKEN
नाम का एक एनवायरमेंट वैरिएबल बनाएं. इसकी वैल्यू, ऐक्सेस टोकन की स्ट्रिंग होनी चाहिए. Firebase CLI, FIREBASE_TOKEN
एनवायरमेंट वैरिएबल को अपने-आप चुन लेगा और एमुलेटर सही तरीके से शुरू हो जाएंगे.
आखिरी उपाय के तौर पर, अपनी बिल्ड स्क्रिप्ट में टोकन शामिल किया जा सकता है. हालांकि, यह पक्का करें कि भरोसेमंद पक्षों के पास इसका ऐक्सेस न हो. हार्ड कोड किए गए इस तरीके के लिए, firebase emulators:exec
कमांड में --token "YOUR_TOKEN_STRING_HERE"
जोड़ा जा सकता है.
Emulator Hub REST API का इस्तेमाल करना
चल रहे एम्युलेटर की सूची बनाना
फ़िलहाल चल रहे एमुलेटर की सूची देखने के लिए, Emulator Hub के /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 या Extensions एमुलेटर में चल रहे किसी भी onDelete
फ़ंक्शन को ट्रिगर किए बिना, Cloud Firestore एमुलेटर में मौजूद सारा डेटा मिटाना हो.
स्थानीय फ़ंक्शन ट्रिगर को कुछ समय के लिए बंद करने के लिए, Emulator Hub के PUT
एंडपॉइंट पर /functions/disableBackgroundTriggers
अनुरोध भेजें.
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
इसका नतीजा, मौजूदा स्थिति की जानकारी देने वाला JSON ऑब्जेक्ट होगा.
{
"enabled": false
}
बंद किए गए लोकल फ़ंक्शन ट्रिगर को चालू करने के लिए, Emulator Hub के /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 | फ़्यूचर | लागू नहीं |
Authentication | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | फ़्यूचर | 4.7.2 |
Cloud Storage for Firebase | 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 | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
Extensions | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
Admin SDK टूल की उपलब्धता
नोड | Java | Python | Go | |
---|---|---|---|---|
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 |
Authentication | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8.0 | फ़्यूचर | फ़्यूचर | फ़्यूचर |
Cloud Functions | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
Hosting | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |
Extensions | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |