স্থানীয় এমুলেটর স্যুট ইনস্টল, কনফিগার এবং সংহত করুন

ফায়ারবেস স্থানীয় এমুলেটর স্যুটটি বিভিন্ন প্রোটোটাইপ এবং পরীক্ষার পরিবেশের জন্য ইনস্টল এবং কনফিগার করা যেতে পারে, এক-অফ প্রোটোটাইপিং সেশন থেকে শুরু করে উত্পাদন-স্কেল অবিচ্ছিন্ন ইন্টিগ্রেশন ওয়ার্কফ্লো পর্যন্ত যে কোনও কিছু।

স্থানীয় এমুলেটর স্যুট ইনস্টল করুন

এমুলেটর স্যুট ইনস্টল করার আগে আপনার প্রয়োজন হবে:

এমুলেটর স্যুট ইনস্টল করতে:

  1. Firebase CLI ইনস্টল করুন। আপনার যদি ইতিমধ্যে ফায়ারবেস সিএলআই ইনস্টল না করে থাকে তবে এখনই এটি ইনস্টল করুন । এমুলেটর স্যুটটি ব্যবহার করতে আপনার সিএলআই সংস্করণ 8.14.0 বা তার বেশি প্রয়োজন। নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনি কোন সংস্করণটি ইনস্টল করেছেন তা পরীক্ষা করতে পারেন:
    firebase --version
  2. আপনি যদি ইতিমধ্যে এটি না করে থাকেন তবে অনস্ক্রিনটি কোন পণ্যগুলি ব্যবহার করবেন তা নির্দিষ্ট করার জন্য অনুরোধ করে ফায়ারবেস প্রকল্প হিসাবে বর্তমান ওয়ার্কিং ডিরেক্টরিটি আরম্ভ করুন:
    firebase init
  3. এমুলেটর স্যুট সেট আপ করুন। এই কমান্ডটি একটি কনফিগারেশন উইজার্ড শুরু করে যা আপনাকে আগ্রহের এমুলেটরগুলি নির্বাচন করতে, সংশ্লিষ্ট এমুলেটর বাইনারি ফাইলগুলি ডাউনলোড করতে এবং ডিফল্টগুলি উপযুক্ত না হলে এমুলেটর পোর্টগুলি সেট করতে দেয়।
    firebase init emulators

একবার কোনও এমুলেটর ইনস্টল হয়ে গেলে, কোনও আপডেট চেক করা হয় না এবং আপনি আপনার ফায়ারবেস সিএলআই সংস্করণ আপডেট না করা পর্যন্ত কোনও অতিরিক্ত স্বয়ংক্রিয় ডাউনলোডগুলি ঘটবে না।

Configure Emulator Suite

আপনি ঐচ্ছিকভাবে এমুলেটরদের নেটওয়ার্ক পোর্ট কনফিগার করতে পারেন এবং firebase.json ফাইলে নিরাপত্তা নিয়মের সংজ্ঞার পথ দেখতে পারেন:

  • firebase init emulators চালানোর মাধ্যমে অথবা ম্যানুয়ালি firebase.json সম্পাদনা করে এমুলেটর পোর্ট পরিবর্তন করুন।
  • Change the path to Security Rules definitions by editing firebase.json manually.

আপনি যদি এই সেটিংসটি কনফিগার না করেন তবে এমুলেটররা তাদের ডিফল্ট পোর্টগুলিতে শুনবে এবং ফায়ারবেস এমুলেটরগুলির জন্য Cloud Firestore , Realtime Database এবং Cloud Storage for Firebase খোলা ডেটা সুরক্ষার সাথে চলবে।

আদেশ বর্ণনা
init এমুলেটর একটি এমুলেটর ইনিশিয়ালাইজেশন উইজার্ড শুরু করুন। Identify emulators to be installed and optionally specify emulator port settings. init emulators অ-ধ্বংসাত্মক; ডিফল্ট গ্রহণ করা বর্তমান এমুলেটর কনফিগারেশন সংরক্ষণ করবে।

পোর্ট কনফিগারেশন

Each emulator binds to a different port on your machine with a preferred default value.

এমুলেটর ডিফল্ট পোর্ট
Authentication 9099
Emulator Suite UI 4000
Cloud Functions 5001
ইভেন্টর্ক 9299
Realtime Database 9000
Cloud Firestore 8080
Cloud Storage for Firebase 9199
Firebase Hosting 5000
Pub/Sub 8085

প্রকল্প আইডি কনফিগারেশন

আপনি কীভাবে এমুলেটরগুলি ব্যবহার করেন তার উপর নির্ভর করে, আপনি বিভিন্ন ফায়ারবেস প্রকল্প আইডি ব্যবহার করে একটি এমুলেটরের একাধিক দৃষ্টান্ত বা প্রদত্ত প্রকল্প আইডির জন্য একাধিক এমুলেটর দৃষ্টান্ত চালাতে পারেন। In such cases, emulator instances are running in a separate environment.

সব এমুলেটর আহ্বানের জন্য একটি প্রজেক্ট আইডি সেট করা সাধারণত একটি ভাল অভ্যাস, তাই Emulator Suite UI , বিভিন্ন পণ্য এমুলেটর এবং একটি নির্দিষ্ট এমুলেটরের সমস্ত চলমান উদাহরণ সব ক্ষেত্রেই সঠিকভাবে যোগাযোগ করতে পারে।

Local Emulator Suite সতর্কতা জারি করে যখন এটি পরিবেশে একাধিক প্রোজেক্ট আইডি সনাক্ত করে, যদিও আপনি আপনার firebase.jsonsingleProjectMode কীটিকে false সেট করে এই আচরণটিকে ওভাররাইড করতে পারেন।

You can check project ID declaration(s) for mismatches in:

  • কমান্ড লাইনে ডিফল্ট প্রকল্প। By default, the project ID will be taken on startup from the project selected with firebase init or firebase use . To view the list of projects (and see which one is selected) use firebase projects:list .
  • Rules unit tests. প্রজেক্ট আইডি প্রায়ই নিয়ম ইউনিট টেস্টিং লাইব্রেরি পদ্ধতি initializeTestEnvironment বা initializeTestApp এর কলগুলিতে নির্দিষ্ট করা হয়।
  • কমান্ড লাইন --project পতাকা। Firebase সিএলআই পাস করা --project পতাকা ডিফল্ট প্রকল্পটিকে ওভাররাইড করে। ইউনিট পরীক্ষা এবং অ্যাপ ইনিশিয়ালাইজেশনে আপনাকে পতাকার মান প্রজেক্ট আইডির সাথে মেলে তা নিশ্চিত করতে হবে।

আপনার অ্যাপল প্ল্যাটফর্ম , অ্যান্ড্রয়েড এবং ওয়েব প্রকল্পগুলি কনফিগার করার সময় আপনি সেট করা প্ল্যাটফর্ম-নির্দিষ্ট প্রজেক্ট আইডি কনফিগারেশনগুলিও পরীক্ষা করুন।

সুরক্ষা বিধি কনফিগারেশন

The emulators will take Security Rules configuration from the database , firestore and storage configuration keys in 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": {
    "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"
    }
  }
}

Specifying Java options

Realtime Database এমুলেটর, Cloud Firestore এমুলেটর এবং Cloud Storage for Firebase কিছু অংশ জাভা ভিত্তিক, যা পরিবেশের ভেরিয়েবল JAVA_TOOL_OPTIONS এর মাধ্যমে জেভিএম পতাকা দিয়ে কাস্টমাইজ করা যায়।

For example, if you experience Java heap space related errors, you may increase the maximum Java heap size to 4GB:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" এর মতো স্পেস দ্বারা পৃথক করা উদ্ধৃতিতে একাধিক পতাকা নির্দিষ্ট করা যেতে পারে। ফ্ল্যাগগুলি শুধুমাত্র ইমুলেটরগুলির জাভা-ভিত্তিক উপাদানগুলিকে প্রভাবিত করে এবং Firebase CLI-এর অন্যান্য অংশগুলিতে যেমন Emulator Suite UI উপর কোন প্রভাব নেই।

এমুলেটর শুরু করুন

আপনি ম্যানুয়ালি বন্ধ না হওয়া পর্যন্ত চালানোর জন্য এমুলেটরগুলি শুরু করতে পারেন, বা একটি মনোনীত পরীক্ষার স্ক্রিপ্টের সময়কালের জন্য চালানোর জন্য তারপর স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যেতে পারেন।

আদেশ বর্ণনা
এমুলেটর: শুরু firebase.json এ কনফিগার করা Firebase পণ্যগুলির জন্য এমুলেটর শুরু করুন। স্পষ্টভাবে বন্ধ না হওয়া পর্যন্ত এমুলেটর প্রক্রিয়া চলতে থাকবে। Calling emulators:start will download the emulators to ~/.cache/firebase/emulators/ if they are not already installed.
পতাকা বর্ণনা
--only ঐচ্ছিক। সীমাবদ্ধতা যা এমুলেটরগুলি শুরু হয়। Supply a comma-separated list of emulator names, specifying one or more of 'auth', 'database', 'firestore', 'functions', 'hosting', or 'pubsub'.
--inspect-functions debug_port ঐচ্ছিক। নির্দিষ্ট পোর্টে ফাংশনগুলির ব্রেকপয়েন্ট ডিবাগিং সক্ষম করতে Cloud Functions এমুলেটর ব্যবহার করুন (অথবা যুক্তি বাদ দিলে ডিফল্ট পোর্ট 9229)। মনে রাখবেন যে যখন এই পতাকা সরবরাহ করা হয়, Cloud Functions এমুলেটর একটি বিশেষ ক্রমিক এক্সিকিউশন মোডে স্যুইচ করে যেখানে ফাংশনগুলি একটি একক প্রক্রিয়ায়, অনুক্রমিক (FIFO) ক্রমে কার্যকর করা হয়; this simplifies function debugging, though the behavior differs from multi-process, parallel execution of functions in the cloud.
--export-on-exit= ঐচ্ছিক। Use with the Authentication , Cloud Firestore , Realtime Database or Cloud Storage for Firebase emulator. Instruct the emulator(s) to export data to a directory when shutdown occurs, as described for the emulators:export command. The export directory can be specified with this flag: 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 ঐচ্ছিক। ফায়ারবেস এমুলেটরের জন্য Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase সাথে ব্যবহার করুন। ফায়ারবেস এমুলেটর দৃষ্টান্তের জন্য --export-on-exit startup অপশন বা emulators:export কমান্ড ব্যবহার করে চলমান Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase ব্যবহার করে ডেটা আমদানি করুন৷ বর্তমানে এমুলেটর মেমরিতে থাকা যেকোনো ডেটা ওভারওয়াইট করা হবে।
এমুলেটর: exec scriptpath firebase.json এ কনফিগার করা ফায়ারবেস পণ্যগুলির জন্য এমুলেটরগুলি শুরু করার পরে scriptpath স্ক্রিপ্টটি চালান। স্ক্রিপ্টটি চলমান শেষ হয়ে গেলে এমুলেটর প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
পতাকা বর্ণনা
--only ঐচ্ছিক। কোন এমুলেটর শুরু হয় তা সীমিত করুন। 'ফায়ারস্টোর', 'ডাটাবেস', 'ফাংশন', 'হোস্টিং', বা 'পাবসব' এর এক বা একাধিক নির্দিষ্ট করে এমুলেটর নামগুলির একটি কমা-বিচ্ছিন্ন তালিকা সরবরাহ করুন।
--inspect-functions debug_port ঐচ্ছিক। নির্দিষ্ট পোর্টে ফাংশনগুলির ব্রেকপয়েন্ট ডিবাগিং সক্ষম করতে Cloud Functions এমুলেটর ব্যবহার করুন (অথবা যুক্তি বাদ দিলে ডিফল্ট পোর্ট 9229)। মনে রাখবেন যে যখন এই পতাকা সরবরাহ করা হয়, Cloud Functions এমুলেটর একটি বিশেষ ক্রমিক এক্সিকিউশন মোডে স্যুইচ করে যেখানে ফাংশনগুলি একটি একক প্রক্রিয়ায়, অনুক্রমিক (FIFO) ক্রমে কার্যকর করা হয়; এটি ফাংশন ডিবাগিংকে সহজতর করে, যদিও আচরণটি মেঘের ফাংশনগুলির সমান্তরাল সম্পাদন থেকে বহু-প্রক্রিয়া থেকে পৃথক হয়।
--export-on-exit= ঐচ্ছিক। ফায়ারবেস এমুলেটরের জন্য Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase সহ ব্যবহার করুন। emulators:export কমান্ড। The export directory can be specified with this flag: firebase emulators:start --export-on-exit=./saved-data . If --import is used, the export path defaults to the same; for example: firebase emulators:start --import=./data-path --export-on-exit . শেষ অবধি, যদি ইচ্ছা হয়, --import এবং --export-on-exit ফ্ল্যাগে বিভিন্ন ডিরেক্টরি পাথ পাস করুন।
--import= import_directory ঐচ্ছিক। ফায়ারবেস এমুলেটরের জন্য Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase সহ ব্যবহার করুন। আমদানি ডেটা --export-on-exit স্টার্টআপ বিকল্প বা এমুলেটরগুলি ব্যবহার করে সংরক্ষণ করা হয়েছে: ফায়ারবেস এমুলেটর উদাহরণের জন্য একটি চলমান Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase emulators:export কমান্ড। বর্তমানে এমুলেটর মেমরিতে থাকা যেকোনো ডেটা ওভাররাইট করা হবে।
--ui ঐচ্ছিক। মৃত্যুদন্ড কার্যকর করার সময় এমুলেটর ইউআই চালান।

firebase emulators:exec পদ্ধতিটি অবিচ্ছিন্ন ইন্টিগ্রেশন ওয়ার্কফ্লোগুলির জন্য সাধারণত আরও উপযুক্ত।

এমুলেটর ডেটা রফতানি এবং আমদানি করুন

আপনি শেয়ারযোগ্য, সাধারণ বেসলাইন ডেটা সেট হিসাবে ব্যবহার করার জন্য Cloud Storage for Firebase Authentication , Cloud Firestore , Realtime Database এবং ক্লাউড স্টোরেজ থেকে ডেটা রপ্তানি করতে পারেন। These data sets can be imported using the --import flag, as described above.

এমুলেটর: রফতানি export_directory

Authentication , Cloud Firestore , Realtime Database বা Cloud Storage for Firebase । একটি চলমান Cloud Firestore , Realtime Database বা Cloud Storage for Firebase থেকে ডেটা রপ্তানি করুন। The specified export_directory will be created if it does not already exist. যদি নির্দিষ্ট ডিরেক্টরি বিদ্যমান থাকে, তাহলে আপনাকে নিশ্চিত করতে বলা হবে যে পূর্ববর্তী রপ্তানি ডেটা ওভাররাইট করা উচিত। আপনি --force পতাকা ব্যবহার করে এই প্রম্পটটি এড়িয়ে যেতে পারেন। এক্সপোর্ট ডিরেক্টরিতে একটি ডেটা ম্যানিফেস্ট ফাইল রয়েছে, firebase-export-metadata.json

উপরে বর্ণিত --export-on-exit পতাকাগুলি ব্যবহার করে শাটডাউন করার সময় আপনি এমুলেটরদের স্বয়ংক্রিয়ভাবে রফতানি করার নির্দেশ দিতে পারেন।

আপনার সিআই সিস্টেমের সাথে একীভূত করুন

চলমান কনটেইনারাইজ এমুলেটর স্যুট ইমেজ

একটি সাধারণ সিআই সেটআপে পাত্রে সহ এমুলেটর স্যুটটির ইনস্টলেশন এবং কনফিগারেশন সোজা।

উল্লেখ্য কয়েকটি সমস্যা আছে:

  • JAR files are installed and cached at ~/.cache/firebase/emulators/ .

    • You may want to add this path to your CI cache configuration to avoid repeated downloads.
  • আপনার সংগ্রহস্থলে একটি firebase.json ফাইল না থাকলে, কোন এমুলেটরগুলি শুরু করা উচিত তা নির্দিষ্ট করতে আপনাকে emulators:start বা emulators:exec কমান্ডে একটি কমান্ড লাইন আর্গুমেন্ট যোগ করতে হবে। যেমন,
    --only functions,firestore

Generate an auth token (Hosting emulator only)

যদি আপনার ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লোগুলি Firebase Hosting এর উপর নির্ভর করে, তাহলে firebase emulators:exec চালানোর জন্য আপনাকে একটি টোকেন ব্যবহার করে লগ ইন করতে হবে। অন্যান্য এমুলেটরদের লগইন প্রয়োজন হয় না।

একটি টোকেন তৈরি করতে, আপনার স্থানীয় পরিবেশে firebase login:ci চালান; এটি কোনও সিআই সিস্টেম থেকে করা উচিত নয়। Follow instructions to authenticate. আপনার কেবলমাত্র এই পদক্ষেপে একবারে এই পদক্ষেপটি সম্পাদন করা উচিত, যেহেতু টোকেনটি বিল্ডগুলিতে বৈধ হবে। টোকেনটিকে একটি পাসওয়ার্ডের মতো বিবেচনা করা উচিত; নিশ্চিত করুন যে এটি গোপন রাখা হয়েছে।

যদি আপনার CI এনভায়রনমেন্ট আপনাকে এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করতে দেয় যা বিল্ড স্ক্রিপ্টে ব্যবহার করা যেতে পারে, তাহলে FIREBASE_TOKEN নামে একটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন, যার মানটি হল অ্যাক্সেস টোকেন স্ট্রিং। The Firebase CLI will automatically pick up the FIREBASE_TOKEN environment variable and the emulators will start properly.

As a last resort, you can simply include the token in your build script, but make sure that untrusted parties do not have access. For this hard-coded approach, you can add --token "YOUR_TOKEN_STRING_HERE" to the firebase emulators:exec command.

এমুলেটর হাব REST API ব্যবহার করুন

List running emulators

To list the currently running emulators, send a GET request to the /emulators endpoint of the Emulator Hub.

curl localhost:4400/emulators

The result will be a JSON object listing all running emulators and their host/port configuration, for example:

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

ব্যাকগ্রাউন্ড ফাংশন ট্রিগার সক্রিয়/অক্ষম করুন

কিছু পরিস্থিতিতে আপনাকে অস্থায়ীভাবে স্থানীয় ফাংশন এবং এক্সটেনশন ট্রিগারগুলি অক্ষম করতে হবে। উদাহরণস্বরূপ আপনি Cloud Firestore এমুলেটরে সমস্ত ডেটা মুছতে চাইতে পারেন যে Cloud Functions বা Extensions এমুলেটরগুলিতে চলমান কোনও onDelete ফাংশনগুলি ট্রিগার না করে।

অস্থায়ীভাবে স্থানীয় ফাংশন ট্রিগারগুলি অক্ষম করতে, এমুলেটর হাবের /functions/disableBackgroundTriggers শেষ পয়েন্টে একটি PUT অনুরোধ প্রেরণ করুন।

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

ফলাফল বর্তমান অবস্থা বিশদ বিবরণ একটি JSON বস্তু হবে.

{
  "enabled": false
}

স্থানীয় ফাংশন ট্রিগারগুলি নিষ্ক্রিয় করার পরে সক্ষম করতে, এমুলেটর হাবের /functions/enableBackgroundTriggers এন্ডপয়েন্টে একটি PUT অনুরোধ পাঠান।

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

ফলাফলটি বর্তমান অবস্থার বিবরণ দিয়ে একটি জেএসএন অবজেক্ট হবে।

{
  "enabled": true
}

এমুলেটর এসডিকে সংহতকরণ

The tables in this section indicate which emulators are supported by client and Admin SDKs. Future means emulator support is planned but not yet available.

Client SDK availability

অ্যান্ড্রয়েড Apple platforms ওয়েব ফায়ারবেস UI
অ্যান্ড্রয়েড
ফায়ারবেস UI
iOS
ফায়ারবেস UI
ওয়েব
Realtime Database 19.4.0 7.2.0 8.0.0 6.4.0 ভবিষ্যৎ N/A
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 ভবিষ্যৎ N/A
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 N/A
Cloud Functions 19.1.0 7.2.0 8.0.0 N/A N/A N/A
Hosting N/A N/A N/A N/A N/A N/A
Extensions N/A N/A N/A N/A N/A N/A

Admin SDK availability

নোড জাভা পাইথন যাও
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 N/A N/A N/A N/A
Hosting N/A N/A N/A N/A
Extensions N/A N/A N/A N/A