ما الذي يمكنني فعله باستخدام محاكي Firebase Hosting؟
يوفّر محاكي Firebase Hosting محاكاة محلية عالية الدقة لخدمات Hosting، ما يتيح الاستفادة من معظم الوظائف المتوفّرة في بيئة الإنتاج Hosting. يتيح لك Hosting المحاكي إجراء ما يلي:
يمكنك إنشاء نماذج أولية لمواقعك الإلكترونية الثابتة وتطبيقات الويب بدون تكبُّد رسوم تخزين أو وصول.
إنشاء نموذج أولي واختبار وظائف HTTPS وتصحيح أخطائها قبل نشرها على موقعك الإلكتروني المستضاف
اختبار المواقع الإلكترونية وتطبيقات الويب في حاويات وسير عمل متكامل ومستمر
اختيار مشروع على Firebase
يحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.
لاختيار المشروع الذي تريد استخدامه، نفِّذ الأمر
firebase use في دليل العمل قبل بدء المحاكيات. أو يمكنك تمرير العلامة --project إلى كل أمر من أوامر المحاكي.
تتيح Local Emulator Suite محاكاة مشاريع Firebase الحقيقية ومشاريع العرض التوضيحي.
نوع المشروع
الميزات
الاستخدام مع المحاكيات
Real
مشروع Firebase حقيقي هو مشروع أنشأته وأعددته (على الأرجح من خلال Firebase وحدة التحكّم).
تحتوي المشاريع الحقيقية على موارد نشطة، مثل مثيلات قواعد البيانات أو حِزم التخزين أو الدوال أو أي موارد أخرى تم إعدادها لمشروع Firebase هذا.
عند العمل مع مشاريع Firebase حقيقية، يمكنك تشغيل المحاكيات لأي من المنتجات المتوافقة أو جميعها.
بالنسبة إلى أي منتجات لا تحاكيها، ستتفاعل تطبيقاتك ورموزك مع مورد مباشر (مثيل قاعدة بيانات، وحزمة تخزين، ودالة، وما إلى ذلك).
تجريبي
لا يتضمّن مشروع Firebase التجريبي أي إعدادات حقيقية في Firebase، كما لا يتضمّن أي موارد مباشرة. ويمكن عادةً الوصول إلى هذه المشاريع من خلال دروس تطبيقية حول الترميز أو برامج تعليمية أخرى.
تبدأ أرقام تعريف المشاريع التجريبية بالبادئة demo-.
عند استخدام مشاريع Firebase التجريبية، تتفاعل تطبيقاتك ورموزك مع المحاكيات فقط. إذا حاول تطبيقك التفاعل مع أحد الموارد التي لم يتم تشغيل محاكي لها، سيتعذّر تنفيذ هذا الرمز.
ننصحك باستخدام المشاريع التجريبية كلما أمكن ذلك. تتضمّن المزايا ما يلي:
إعداد أسهل، إذ يمكنك تشغيل المحاكيات بدون إنشاء مشروع على Firebase
أمان أقوى، لأنه في حال استدعى الرمز عن طريق الخطأ موارد غير محاكية (إنتاج)، لن يكون هناك أي فرصة لتغيير البيانات أو استخدامها أو إصدار الفواتير
إتاحة استخدام التطبيق بشكل أفضل بدون اتصال بالإنترنت، إذ لا يلزم الاتصال بالإنترنت لتنزيل إعدادات حزمة SDK
سير العمل الأساسي لإنشاء النماذج الأولية
إذا كنت بصدد إجراء تكرارات سريعة أو أردت أن يتفاعل تطبيقك مع موارد مشروع الخلفية المحاكية، يمكنك اختبار محتوى Hosting وإعداداته محليًا. عند إجراء الاختبار محليًا، يعرض Firebase تطبيق الويب الخاص بك على عنوان URL مستضاف محليًا.
(اختياري) يتفاعل تطبيقك المستضاف محليًا تلقائيًا مع موارد المشروع الحقيقية، وليس المحاكية (مثل الدوال وقاعدة البيانات والقواعد وما إلى ذلك).
يمكنك بدلاً من ذلك ربط تطبيقك اختياريًا لاستخدام أي موارد محاكية للمشروع
قمت بإعدادها. مزيد من المعلومات:
Realtime Database |
Cloud Firestore |
Cloud Functions
من جذر دليل مشروعك المحلي، نفِّذ الأمر التالي:
firebase emulators:start
افتح تطبيق الويب على عنوان URL المحلي الذي تعرضه واجهة سطر الأوامر (عادةً
http://localhost:5000).
لتعديل عنوان URL المحلي وإضافة التغييرات، أعِد تحميل المتصفّح.
الاختبار من الأجهزة المحلية الأخرى
لا تستجيب المحاكيات تلقائيًا إلا للطلبات الواردة من localhost. هذا يعني أنّه سيكون بإمكانك الوصول إلى المحتوى المستضاف من متصفّح الويب على جهاز الكمبيوتر، ولكن ليس من الأجهزة الأخرى على شبكتك. إذا أردت إجراء الاختبار من أجهزة محلية أخرى، اضبط firebase.json على النحو التالي:
إنشاء رموز مميزة للمصادقة لعمليات سير عمل الدمج المستمر
إذا كانت مهام سير العمل الخاصة بالتكامل المستمر تعتمد على Firebase Hosting، عليك تسجيل الدخول باستخدام رمز مميّز لتنفيذ firebase emulators:exec. لا تتطلّب المحاكيات الأخرى تسجيل الدخول.
لإنشاء رمز مميّز، شغِّل firebase login:ci في بيئتك المحلية. يجب عدم تنفيذ ذلك من نظام CI. اتّبِع التعليمات لإثبات الهوية.
لن تحتاج إلى تنفيذ هذه الخطوة سوى مرة واحدة لكل مشروع، لأنّ الرمز المميّز سيكون صالحًا في جميع الإصدارات. يجب التعامل مع الرمز المميز كما لو كان كلمة مرور، لذا احرص على الحفاظ على سرّيته.
إذا كانت بيئة التكامل المستمر (CI) تتيح لك تحديد متغيّرات بيئة يمكن استخدامها في نصوص البرامج الخاصة بالإنشاء، ما عليك سوى إنشاء متغيّر بيئة باسم FIREBASE_TOKEN، وتكون قيمته هي سلسلة رمز الدخول. ستختار واجهة سطر الأوامر (CLI) تلقائيًا متغير بيئة FIREBASE_TOKEN، وستبدأ المحاكيات بشكل صحيح.Firebase
كحلّ أخير، يمكنك ببساطة تضمين الرمز المميّز في برنامج الإنشاء النصي، ولكن تأكَّد من عدم وصول جهات غير موثوق بها إليه. بالنسبة إلى هذا الأسلوب المضمّن في الرمز، يمكنك إضافة --token "YOUR_TOKEN_STRING_HERE" إلى الأمر firebase emulators:exec.
تاريخ التعديل الأخير: 2025-07-25 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-07-25 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["\u003cbr /\u003e\n\nBefore you start prototyping and testing your web app with the\nFirebase Hosting emulator, make sure that you [understand the overall Firebase Local Emulator Suite workflow](/docs/emulator-suite/connect_and_prototype?database=Firestore),\nand that you [install and configure](/docs/emulator-suite/install_and_configure)\nthe Local Emulator Suite and review its [CLI commands](/docs/emulator-suite/install_and_configure#startup).\n\nYou should also be familiar with the features and implementation workflow\nfor Firebase Hosting. Start with the\n[introduction to Firebase Hosting](/docs/hosting).\n\nWhat can I do with the Firebase Hosting emulator?\n\nThe Firebase Hosting emulator provides high-fidelity local emulation of\nHosting services, providing much of the functionality found in\n[production Hosting](/docs/hosting/quickstart). The Hosting emulator\nlets you:\n\n- Prototype your static sites and web apps without incurring storage or access charges\n- Prototype, test and debug HTTPS functions before deploying to your Hosting site\n- Test sites and web apps in containerized, continuous integration workflows.\n\nChoose a Firebase project\n\nThe Firebase Local Emulator Suite emulates products for a single Firebase project.\n\nTo select the project to use, before you start the emulators, in the CLI run\n`firebase use` in your working directory. Or, you can pass\nthe `--project` flag to each emulator\ncommand.\n| **Note:** It's generally a good practice to use one project ID for all emulator invocations, so the Emulator Suite UI, different product emulators, and all running instances of a particular emulator can communicate correctly in all cases. In fact, by default, the Local Emulator Suite will warn on detecting multiple project IDs in use, though you can override this behavior. For guidance on setting and managing project IDs, see the [Installation and configuration guide](/docs/emulator-suite/install_and_configure#project_id_configuration).\n\nLocal Emulator Suite supports emulation of *real* Firebase projects and\n*demo* projects.\n\n| Project type | Features | Use with emulators |\n|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Real | A real Firebase project is one you created and configured (most likely via the Firebase console). Real projects have live resources, like database instances, storage buckets, functions, or any other resource you set up for that Firebase project. | When working with real Firebase projects, you can run emulators for any or all of the supported products. For any products you are not emulating, your apps and code will interact with the *live* resource (database instance, storage bucket, function, etc.). |\n| Demo | A demo Firebase project has no *real* Firebase configuration and no live resources. These projects are usually accessed via codelabs or other tutorials. Project IDs for demo projects have the `demo-` prefix. | When working with demo Firebase projects, your apps and code interact with emulators *only*. If your app attempts to interact with a resource for which an emulator isn't running, that code will fail. |\n\nWe recommend you use demo projects wherever possible. Benefits include:\n\n- Easier setup, since you can run the emulators without ever creating a Firebase project\n- Stronger safety, since if your code accidentally invokes non-emulated (production) resources, there is no chance of data change, usage and billing\n- Better offline support, since there is no need to access the internet to download your SDK configuration.\n\n| **Note:** If you want to emulate cross-service interactions such as database-triggered Cloud Functions or Rules that rely on Authentication you must make sure that the project ID in your code (in `initializeApp()`, etc.) matches the project ID used by the Firebase CLI.\n\nCore prototyping workflow\n\nIf you're making quick iterations or you want your app to interact with\nemulated backend project resources, you can test your Hosting content and\nconfig locally. When testing locally, Firebase serves your web app at a locally\nhosted URL.\n\n1. *(Optional)* By default, your locally hosted app will interact with *real* ,\n not *emulated* , project resources (functions, database, rules, etc.).\n You can instead optionally connect your app to use any *emulated* project\n resources that you've configured. Learn more:\n [Realtime Database](/docs/emulator-suite/connect_and_prototype?database=RTDB) \\|\n [Cloud Firestore](/docs/emulator-suite/connect_and_prototype?database=Firestore) \\|\n [Cloud Functions](/docs/emulator-suite/connect_functions)\n\n2. From the root of your local project directory, run the following command:\n\n ```\n firebase emulators:start\n ```\n3. Open your web app at the local URL returned by the CLI (usually\n `http://localhost:5000`).\n\n4. To update the local URL with changes, refresh your browser.\n\nTest from other local devices\n\nBy default, the emulators only respond to requests from `localhost`. This\nmeans that you'll be able to access your hosted content from your computer's web\nbrowser but not from other devices on your network. If you'd like to test from\nother local devices, configure your `firebase.json` like so: \n\n \"emulators\": {\n // ...\n\n \"hosting\": {\n \"port\": 5000,\n \"host\": \"0.0.0.0\"\n }\n }\n\nGenerate auth tokens for continuous integration workflows\n\nIf your continuous integration workflows rely on Firebase Hosting, then you will\nneed to log in using a token in order to run `firebase emulators:exec`. The\nother emulators do not require login.\n| **Note:** If you have configured hosting in `firebase.json` but do not need it in CI test setups, use the `--only` flag to `emulators:start` or `emulators:exec` to include only the emulators that you need.\n\nTo generate a token, run `firebase login:ci` on your local environment; this\nshould not be performed from a CI system. Follow instructions to authenticate.\nYou should only need to perform this step once per project, since the token will\nbe valid across builds. The token should be treated like a password; make sure\nit is kept secret.\n\nIf your CI environment allows you to specify environment variables that can be\nused in the build scripts, simply create an environment variable called\n`FIREBASE_TOKEN`, with the value being the access token string. The\nFirebase CLI will automatically pick up the `FIREBASE_TOKEN` environment\nvariable and the emulators will start properly.\n\nAs a last resort, you can simply include the token in your build script, but\nmake sure that untrusted parties do not have access. For this hard-coded\napproach, you can add `--token \"YOUR_TOKEN_STRING_HERE\"` to the\n`firebase emulators:exec` command.\n\nWhat next?\n\n- Run a quickstart using the Hosting emulator by following the [Firebase web\n codelab](/codelabs/firebase-web).\n- Understand how to prototype HTTPS functions using the Hosting emulator as described in the [Hosting guides for functions](/docs/hosting/functions).\n- For a curated set of videos and detailed how-to examples, follow the [Firebase Emulators Training Playlist](/learn/pathways/firebase-emulators)."]]