Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

स्थानीय एमुलेटर सूट को स्थापित, कॉन्फ़िगर और एकीकृत करें

फायरबेस लोकल एमुलेटर सूट को विभिन्न प्रोटोटाइप और परीक्षण वातावरण के लिए स्थापित और कॉन्फ़िगर किया जा सकता है, एक बार के प्रोटोटाइप सत्र से लेकर उत्पादन-पैमाने पर निरंतर एकीकरण वर्कफ़्लो तक कुछ भी।

स्थानीय एमुलेटर सूट स्थापित करें

एमुलेटर सूट को स्थापित करने से पहले आपको आवश्यकता होगी:

  • Node.js संस्करण 8.0 या उच्चतर।
  • जावा संस्करण 1.8 या उच्चतर।

एमुलेटर सूट स्थापित करने के लिए:

  1. स्थापित Firebase CLI । आप पहले से ही Firebase CLI स्थापित नहीं है, तो अब इसे स्थापित । एमुलेटर सूट का उपयोग करने के लिए आपको सीएलआई संस्करण 8.14.0 या उच्चतर की आवश्यकता होगी। आप देख सकते हैं कि कौन सा संस्करण स्थापित किए गए निम्न आदेश का उपयोग कर:
    firebase --version
  2. यदि आपने ऐसा नहीं किया है, तो एक Firebase परियोजना के रूप में वर्तमान कार्यशील निर्देशिका को प्रारंभ, उपयोग करने के लिए कौन से उत्पाद निर्दिष्ट करने के लिए स्क्रीन पर दिए निर्देशों का पालन:
    firebase init
  3. एमुलेटर सूट सेट करें। यह कमांड एक कॉन्फ़िगरेशन विज़ार्ड शुरू करता है जो आपको रुचि के एमुलेटर का चयन करने देता है, संबंधित एमुलेटर बाइनरी फ़ाइलों को डाउनलोड करता है, और डिफ़ॉल्ट उपयुक्त नहीं होने पर एमुलेटर पोर्ट सेट करता है।
    firebase init emulators

एक बार एक एमुलेटर स्थापित हो जाने के बाद, कोई अपडेट जांच नहीं की जाती है और जब तक आप अपने फायरबेस सीएलआई संस्करण को अपडेट नहीं करते हैं, तब तक कोई अतिरिक्त स्वचालित डाउनलोड नहीं होगा।

एमुलेटर सूट कॉन्फ़िगर करें

आप वैकल्पिक रूप में सुरक्षा नियम परिभाषाओं को emulators 'नेटवर्क बंदरगाहों और पथ कॉन्फ़िगर कर सकते हैं firebase.json फ़ाइल:

  • चलाकर एमुलेटर बदलें बंदरगाहों firebase init emulators या संपादित करके firebase.json मैन्युअल।
  • संपादन करके सुरक्षा नियम परिभाषाओं के लिए पथ बदलें firebase.json मैन्युअल।

यदि आप इन सेटिंग्स को कॉन्फ़िगर नहीं करते हैं, तो एमुलेटर अपने डिफ़ॉल्ट पोर्ट पर सुनेंगे, और क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज एमुलेटर खुली डेटा सुरक्षा के साथ चलेंगे।

आदेश विवरण
इनिट एमुलेटर एक एमुलेटर आरंभीकरण विज़ार्ड प्रारंभ करें। इंस्टॉल किए जाने वाले एमुलेटर की पहचान करें और वैकल्पिक रूप से एमुलेटर पोर्ट सेटिंग्स निर्दिष्ट करें। init emulators गैर विनाशकारी है; डिफ़ॉल्ट स्वीकार करना वर्तमान एमुलेटर कॉन्फ़िगरेशन को सुरक्षित रखेगा।

पोर्ट विन्यास

प्रत्येक एमुलेटर आपकी मशीन पर एक पसंदीदा डिफ़ॉल्ट मान के साथ एक अलग पोर्ट से जुड़ता है।

एम्यूलेटर डिफ़ॉल्ट पोर्ट
प्रमाणीकरण 9099
एमुलेटर सूट यूआई 4000
बादल कार्य 5001
रीयलटाइम डेटाबेस ९०००
क्लाउड फायरस्टोर 8080
घन संग्रहण 9199
फायरबेस होस्टिंग 5000
पब/उप 8085

सुरक्षा नियम विन्यास

Emulators से सुरक्षा नियम विन्यास ले जाएगा database , firestore और storage में विन्यास चाबियाँ firebase.json

{
  // 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": {
    "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"
    }
  }
}

एमुलेटर शुरू करें

आप एमुलेटर को मैन्युअल रूप से समाप्त होने तक चलाने के लिए शुरू कर सकते हैं, या एक निर्दिष्ट परीक्षण स्क्रिप्ट की अवधि के लिए चलाने के लिए स्वचालित रूप से बंद हो सकते हैं।

आदेश विवरण
एमुलेटर: स्टार्ट में विन्यस्त Firebase उत्पादों के लिए प्रारंभ emulators firebase.json । स्पष्ट रूप से बंद होने तक एमुलेटर प्रक्रियाएं चलती रहेंगी। कॉलिंग emulators:start करने के लिए emulators डाउनलोड करेगा ~ / .cache / firebase / emulators / अगर वे पहले से स्थापित नहीं हैं।
झंडा डिक्रिप्शन
--only वैकल्पिक। सीमित करें कि कौन से एमुलेटर शुरू होते हैं। एम्यूलेटर नामों की अल्पविराम से अलग की गई सूची की आपूर्ति करें, जिसमें एक या अधिक 'प्रमाणीकरण', 'डेटाबेस', 'फ़ायरस्टोर', 'फ़ंक्शन', 'होस्टिंग' या 'पबसुब' निर्दिष्ट करें।
--inspect-functions debug_port वैकल्पिक। निर्दिष्ट पोर्ट पर फ़ंक्शन के ब्रेकपॉइंट डिबगिंग को सक्षम करने के लिए क्लाउड फ़ंक्शंस एमुलेटर के साथ उपयोग करें (या डिफ़ॉल्ट पोर्ट 9229 यदि तर्क छोड़ा गया है)। ध्यान दें कि जब इस ध्वज की आपूर्ति की जाती है, तो क्लाउड फ़ंक्शंस एमुलेटर एक विशेष क्रमबद्ध निष्पादन मोड में स्विच हो जाता है जिसमें अनुक्रमिक (फीफो) क्रम में कार्यों को एक ही प्रक्रिया में निष्पादित किया जाता है; यह फ़ंक्शन डिबगिंग को सरल करता है, हालांकि व्यवहार बहु-प्रक्रिया से भिन्न होता है, क्लाउड में फ़ंक्शन के समानांतर निष्पादन।
--export-on-exit= वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। एमुलेटर (रों) निर्यात डेटा के लिए एक निर्देशिका जब बंद होता है, के रूप में के लिए वर्णित हिदायत emulators:export आदेश। निर्यात निर्देशिका इस ध्वज के साथ निर्दिष्ट किया जा सकता: firebase emulators:start --export-on-exit=./saved-data । यदि --import प्रयोग किया जाता है, निर्यात पथ एक ही करने के लिए चूक; उदाहरण के लिए: firebase emulators:start --import=./data-path --export-on-exit । अन्त में, अगर वांछित, के लिए अलग निर्देशिका पथ पारित --import और --export-on-exit झंडे।
--import= import_directory वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। आयात डेटा का उपयोग कर बचाया --export-on-exit स्टार्टअप विकल्प या emulators:export एक चल प्रमाणीकरण, बादल Firestore, रीयलटाइम डाटाबेस या क्लाउड संग्रहण एमुलेटर उदाहरण के लिए आदेश। वर्तमान में एम्यूलेटर मेमोरी में मौजूद कोई भी डेटा ओवरविट हो जाएगा।
emulators: कार्यकारी scriptpath पर स्क्रिप्ट चलाने scriptpath में विन्यस्त Firebase उत्पादों के लिए emulators शुरू करने के बाद firebase.json । जब स्क्रिप्ट चलना समाप्त हो जाएगी तो एमुलेटर प्रक्रियाएं स्वचालित रूप से बंद हो जाएंगी।
झंडा डिक्रिप्शन
--only वैकल्पिक। सीमित करें कि कौन से एमुलेटर शुरू होते हैं। एक या अधिक 'फ़ायरस्टोर', 'डेटाबेस', 'फ़ंक्शंस', 'होस्टिंग', या 'पबसुब' को निर्दिष्ट करते हुए एम्यूलेटर नामों की अल्पविराम से अलग की गई सूची की आपूर्ति करें।
--inspect-functions debug_port वैकल्पिक। निर्दिष्ट पोर्ट पर फ़ंक्शन के ब्रेकपॉइंट डिबगिंग को सक्षम करने के लिए क्लाउड फ़ंक्शंस एमुलेटर के साथ उपयोग करें (या डिफ़ॉल्ट पोर्ट 9229 यदि तर्क छोड़ा गया है)। ध्यान दें कि जब इस ध्वज की आपूर्ति की जाती है, तो क्लाउड फ़ंक्शंस एमुलेटर एक विशेष क्रमबद्ध निष्पादन मोड में स्विच हो जाता है जिसमें अनुक्रमिक (फीफो) क्रम में कार्यों को एक ही प्रक्रिया में निष्पादित किया जाता है; यह फ़ंक्शन डिबगिंग को सरल करता है, हालांकि व्यवहार बहु-प्रक्रिया से भिन्न होता है, क्लाउड में फ़ंक्शन के समानांतर निष्पादन।
--export-on-exit= वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। एमुलेटर (रों) निर्यात डेटा के लिए एक निर्देशिका जब बंद होता है, के रूप में के लिए वर्णित हिदायत emulators:export आदेश। निर्यात निर्देशिका इस ध्वज के साथ निर्दिष्ट किया जा सकता: firebase emulators:start --export-on-exit=./saved-data । यदि --import प्रयोग किया जाता है, निर्यात पथ एक ही करने के लिए चूक; उदाहरण के लिए: firebase emulators:start --import=./data-path --export-on-exit । अन्त में, अगर वांछित, के लिए अलग निर्देशिका पथ पारित --import और --export-on-exit झंडे।
--import= import_directory वैकल्पिक। प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर के साथ प्रयोग करें। आयात डेटा का उपयोग कर बचाया --export-on-exit स्टार्टअप विकल्प या emulators:export एक चल प्रमाणीकरण, बादल Firestore, रीयलटाइम डाटाबेस या क्लाउड संग्रहण एमुलेटर उदाहरण के लिए आदेश। वर्तमान में एम्यूलेटर मेमोरी में मौजूद कोई भी डेटा अधिलेखित कर दिया जाएगा।
--ui वैकल्पिक। निष्पादन के दौरान एमुलेटर यूआई चलाएँ।

firebase emulators:exec विधि आम तौर पर निरंतर एकीकरण वर्कफ़्लो के लिए अधिक उपयुक्त है।

एमुलेटर डेटा निर्यात और आयात करें

आप साझा करने योग्य, सामान्य बेसलाइन डेटा सेट के रूप में उपयोग करने के लिए प्रमाणीकरण, क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज एमुलेटर से डेटा निर्यात कर सकते हैं। ये आंकड़े सेट का उपयोग कर आयात किया जा सकता --import जैसा कि ऊपर वर्णित झंडा।

emulators: निर्यात export_directory

प्रमाणीकरण, बादल Firestore, रीयलटाइम डाटाबेस या क्लाउड संग्रहण एमुलेटर। चल रहे क्लाउड फायरस्टोर, रीयलटाइम डेटाबेस या क्लाउड स्टोरेज एमुलेटर इंस्टेंस से डेटा निर्यात करें। निर्दिष्ट export_directory यदि वह पहले से मौजूद नहीं है बनाया जाएगा। यदि निर्दिष्ट निर्देशिका मौजूद है, तो आपको यह पुष्टि करने के लिए कहा जाएगा कि पिछले निर्यात डेटा को अधिलेखित किया जाना चाहिए। आप --force ध्वज का उपयोग कर यह संकेत छोड़ सकते हैं। निर्यात निर्देशिका एक डेटा मैनिफ़ेस्ट फ़ाइल, शामिल firebase-export-metadata.json

आप स्वचालित रूप से जब वे उपयोग कर बंद निर्यात आंकड़ों के emulators निर्देश दे सकते हैं --export-on-exit ऊपर वर्णित झंडे।

अपने सीआई सिस्टम के साथ एकीकृत करें

कंटेनरीकृत एमुलेटर सूट छवियों को चलाना

एक विशिष्ट सीआई सेटअप में कंटेनरों के साथ एम्यूलेटर सूट की स्थापना और विन्यास सीधा है।

ध्यान देने योग्य कुछ मुद्दे हैं:

  • जार फ़ाइलों स्थापित किया है और पर कैश नहीं किया जाता ~/.cache/firebase/emulators/

    • बार-बार डाउनलोड होने से बचने के लिए आप इस पथ को अपने CI कैश कॉन्फ़िगरेशन में जोड़ना चाह सकते हैं।
  • यदि आप एक नहीं है, तो firebase.json अपने भंडार में फ़ाइल, आप के लिए एक कमांड लाइन तर्क को जोड़ना होगा emulators:start या emulators:exec निर्दिष्ट करने के लिए आदेश जो emulators शुरू किया जाना चाहिए। उदाहरण के लिए,
    --only functions,firestore

एक प्रामाणिक टोकन उत्पन्न करें (केवल होस्टिंग एमुलेटर)

अपने निरंतर एकीकरण वर्कफ़्लो Firebase होस्टिंग पर भरोसा करते हैं, तो आप तभी चल सकता है एक टोकन का उपयोग लॉगिन करना होगा firebase emulators:exec । अन्य एमुलेटर को लॉगिन की आवश्यकता नहीं है।

एक टोकन, चलाने उत्पन्न करने के लिए firebase login:ci अपने स्थानीय पर्यावरण पर; यह एक सीआई प्रणाली से नहीं किया जाना चाहिए। प्रमाणित करने के लिए निर्देशों का पालन करें। आपको प्रति प्रोजेक्ट केवल एक बार इस चरण को करने की आवश्यकता है, क्योंकि टोकन पूरे बिल्ड में मान्य होगा। टोकन को पासवर्ड की तरह माना जाना चाहिए; सुनिश्चित करें कि इसे गुप्त रखा गया है।

अपने सीआई वातावरण आप वातावरण चर कि निर्माण लिपियों में इस्तेमाल किया जा सकता निर्दिष्ट कर सकते हैं, तो बस एक वातावरण चर कहा बनाने FIREBASE_TOKEN मूल्य स्ट्रिंग टोकन का उपयोग होने के साथ। Firebase CLI स्वचालित रूप से ले जाएगा FIREBASE_TOKEN वातावरण चर और emulators ठीक से शुरू कर देंगे।

अंतिम उपाय के रूप में, आप बस अपनी बिल्ड स्क्रिप्ट में टोकन शामिल कर सकते हैं, लेकिन सुनिश्चित करें कि अविश्वसनीय पार्टियों की पहुंच नहीं है। इस हार्ड-कोडेड दृष्टिकोण के लिए, आप जोड़ सकते हैं --token "YOUR_TOKEN_STRING_HERE" को firebase emulators:exec आदेश।

एमुलेटर हब REST API का उपयोग करें

चल रहे अनुकरणकर्ताओं की सूची बनाएं

वर्तमान में चल रहे emulators सूचीबद्ध करने के लिए, एक भेजने GET करने के लिए अनुरोध /emulators एम्यूलेटर हब के अंतिम बिंदु।

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
  }
}

पृष्ठभूमि फ़ंक्शन ट्रिगर सक्षम / अक्षम करें

कुछ स्थितियों में आपको स्थानीय फ़ंक्शन ट्रिगर को अस्थायी रूप से अक्षम करना होगा। उदाहरण के लिए यदि आप किसी भी ट्रिगर किए बिना बादल Firestore एमुलेटर में डेटा को हटा सकते हैं onDelete कार्यों कि बादल कार्य एमुलेटर में चल रहे हैं।

अस्थायी रूप से अक्षम स्थानीय समारोह चलाता करने के लिए, एक भेजने PUT करने के लिए अनुरोध /functions/disableBackgroundTriggers एम्यूलेटर हब के अंतिम बिंदु।

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

परिणाम एक JSON ऑब्जेक्ट होगा जो वर्तमान स्थिति का विवरण देगा।

{
  "enabled": false
}

स्थानीय समारोह चलाता बाद वे अक्षम हो सक्षम करने के लिए एक भेज PUT करने के लिए अनुरोध /functions/enableBackgroundTriggers एम्यूलेटर हब के अंतिम बिंदु।

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

परिणाम एक JSON ऑब्जेक्ट होगा जो वर्तमान स्थिति का विवरण देगा।

{
  "enabled": true
}

एमुलेटर एसडीके एकीकरण

इस खंड की तालिकाएं दर्शाती हैं कि कौन से एमुलेटर क्लाइंट और एडमिन एसडीके द्वारा समर्थित हैं। भविष्य साधन एमुलेटर समर्थन की योजना बनाई है, लेकिन अभी तक उपलब्ध नहीं है।

ग्राहक एसडीके उपलब्धता

एंड्रॉयड आईओएस वेब फायरबेस यूआई
एंड्रॉयड
फायरबेस यूआई
आईओएस
फायरबेस यूआई
वेब
रीयलटाइम डेटाबेस 19.4.0 7.2.0 8.0.0 6.4.0 भविष्य एन/ए
क्लाउड फायरस्टोर २१.६.० 7.2.0 8.0.0 6.4.0 भविष्य एन/ए
प्रमाणीकरण 20.0.0 7.0.0 8.0.0 7.0.0 भविष्य भविष्य
घन संग्रहण 20.0.0 8.0.0 8.4.0 एन/ए एन/ए एन/ए
बादल कार्य 19.1.0 7.2.0 8.0.0 एन/ए एन/ए एन/ए
मेजबानी एन/ए एन/ए एन/ए एन/ए एन/ए एन/ए

व्यवस्थापक एसडीके उपलब्धता

नोड जावा अजगर जाना
रीयलटाइम डेटाबेस 8.6.0 6.10.0 २.१८.० भविष्य
क्लाउड फायरस्टोर 8.0.0 6.10.0 3.0.0 1.0.0
प्रमाणीकरण 9.3.0 भविष्य भविष्य भविष्य
घन संग्रहण 9.8.0 भविष्य भविष्य भविष्य
बादल कार्य एन/ए एन/ए एन/ए एन/ए
मेजबानी एन/ए एन/ए एन/ए एन/ए