Firebase Local Emulator Suite को अलग-अलग प्रोटोटाइप और टेस्ट एनवायरमेंट के लिए इंस्टॉल और कॉन्फ़िगर किया जा सकता है. जैसे, एक बार होने वाले प्रोटोटाइपिंग सेशन से लेकर प्रोडक्शन-स्केल के लगातार इंटिग्रेशन वर्कफ़्लो तक.
Local Emulator Suite इंस्टॉल करना
Emulator Suite को इंस्टॉल करने से पहले, आपको इनकी ज़रूरत होगी:
Emulator Suite इंस्टॉल करने के लिए:
- Firebase सीएलआई इंस्टॉल करें.
अगर आपने Firebase CLI पहले से इंस्टॉल नहीं किया है, तो
इसे अभी इंस्टॉल करें.
Emulator Suite का इस्तेमाल करने के लिए, आपको CLI 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 हीप के ज़्यादा से ज़्यादा साइज़ को 4GB तक बढ़ाया जा सकता है:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
एक से ज़्यादा फ़्लैग को स्पेस से अलग किए गए कोटेशन में तय किया जा सकता है. जैसे, JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
. ये फ़्लैग, सिर्फ़ एम्युलेटर के Java पर आधारित कॉम्पोनेंट पर असर डालते हैं. इनका Firebase CLI के अन्य हिस्सों, जैसे कि Emulator Suite UI पर कोई असर नहीं पड़ता.
एम्युलेटर चालू करना
इम्यूलेटर को तब तक चलाया जा सकता है, जब तक उन्हें मैन्युअल तरीके से बंद न किया जाए. इसके अलावा, उन्हें किसी टेस्ट स्क्रिप्ट की अवधि तक चलाने के लिए भी सेट किया जा सकता है. ऐसा करने पर, वे अपने-आप बंद हो जाएंगे.
आदेश | ब्यौरा | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emulators:start | firebase.json में कॉन्फ़िगर किए गए Firebase प्रॉडक्ट के लिए, एम्युलेटर शुरू करें.
इमुलेटर प्रोसेस तब तक चलती रहेंगी, जब तक उन्हें बंद नहीं किया जाता. कॉल करने पर
emulators:start , एम्युलेटर को ~/.cache/firebase/emulators/ में डाउनलोड करेगा. ऐसा तब होगा, जब
वे पहले से इंस्टॉल न हों.
|
||||||||||||||
emulators:exec scriptpath | scriptpath में कॉन्फ़िगर किए गए Firebase प्रॉडक्ट के लिए, एम्युलेटर शुरू करने के बाद scriptpath पर स्क्रिप्ट चलाएं.firebase.json स्क्रिप्ट के चलने की प्रोसेस पूरी होने के बाद, एम्युलेटर की प्रोसेस अपने-आप बंद हो जाएंगी.
|
आम तौर पर, 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 को इंस्टॉल और कॉन्फ़िगर करना आसान है. इसके लिए, सामान्य CI सेटअप का इस्तेमाल किया जाता है.
इन बातों का ध्यान रखें:
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 के /functions/disableBackgroundTriggers
एंडपॉइंट पर PUT
अनुरोध भेजें.
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 टूल की उपलब्धता
Android | Apple के प्लैटफ़ॉर्म | वेब |
Firebase UI Android |
Firebase UI iOS |
Firebase UI Web |
|
---|---|---|---|---|---|---|
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 | लागू नहीं | लागू नहीं | लागू नहीं | लागू नहीं |