قبلاز استفاده از شبیهساز Extensions با برنامهتان، مطمئن شوید که گردش کار کلی Firebase Local Emulator Suite را درک میکنید، و نصب و پیکربندی Local Emulator Suite را انجام دادهاید و فرمانهای CLI آن را مرور کردهاید.
این راهنما همچنین فرض میکند که شما با Firebase Extensions و نحوه استفاده از آنها در برنامههای Firebase آشنا هستید.
با شبیهساز Extensions چه کارهایی میتوانم انجام دهم؟
با شبیهساز Extensions، میتوانید افزونهها را در محیط محلی امنی نصب و مدیریت کنید و ضمن بهحداقل رساندن هزینههای صدور صورتحساب، قابلیتهای آنها را بهتر درک کنید. شبیهساز توابع افزونه شما را بهصورت محلی اجرا میکند، ازجمله توابع راهاندازیشده با رویداد پسزمینه بااستفاده از شبیهسازهای Cloud Firestore، Realtime Database، Cloud Storage for Firebase، Authentication و Pub/Sub، و توابع راهاندازیشده با Eventarc که در Cloud Functions نسخه ۲ پیادهسازی شدهاند.
پروژه Firebase را انتخاب کنید
Firebase Local Emulator Suite محصولات را برای یک پروژه Firebase شبیهسازی میکند.
برای انتخاب پروژه موردنظر، قبلاز شروع شبیهسازها، در CLI
firebase use را در دایرکتوری کاریتان اجرا کنید. یا میتوانید پرچم --project را به هر فرمان شبیهساز ارسال کنید.
Local Emulator Suite از شبیهسازی پروژههای واقعی Firebase و پروژههای نمونه پشتیبانی میکند.
| نوع پروژه | ویژگیها | استفاده با شبیهسازها |
|---|---|---|
| رئال |
پروژه Firebase واقعی پروژهای است که شما ایجاد و پیکربندی کردهاید (احتمالاً ازطریق کنسول Firebase). پروژههای واقعی منابع زنده دارند، مانند نمونههای پایگاه داده، سطلهای ذخیرهسازی، توابع، یا هر منبع دیگری که برای آن پروژه Firebase راهاندازی میکنید. |
هنگام کار با پروژههای واقعی Firebase، میتوانید شبیهسازها را برای هرکدام یا همه محصولات پشتیبانیشده اجرا کنید. برای هر محصولی که شبیهسازی نمیکنید، برنامهها و کد شما با منبع فعال (نمونه پایگاه داده، سطل ذخیرهسازی، تابع، و غیره) تعامل خواهند داشت. |
| پخش نمایشی |
پروژه نمایشی Firebase پیکربندی واقعی Firebase و منابع زنده ندارد. این پروژهها معمولاً ازطریق codelabs یا سایر آموزشها قابلدسترسی هستند. شناسههای پروژه برای پروژههای نمایشی پیشوند |
هنگام کار با پروژههای نمایشی Firebase، برنامهها و کد شما فقط با شبیهسازها تعامل دارند. اگر برنامهتان تلاش کند با منبعی تعامل برقرار کند که شبیهساز برای آن اجرا نمیشود، آن کد ناموفق خواهد بود. |
توصیه میکنیم هرجا ممکن است از پروژههای نمایشی استفاده کنید. مزایا عبارتانداز:
- راهاندازی آسانتر، زیرا میتوانید شبیهسازها را بدون ایجاد پروژه Firebase اجرا کنید
- ایمنی قویتر، زیرا اگر کد شما بهطور تصادفی منابع شبیهسازینشده (تولید) را فراخوانی کند، هیچ احتمالی برای تغییر داده، استفاده، و صدور صورتحساب وجود ندارد
- پشتیبانی آفلاین بهتر، زیرا برای بارگیری پیکربندی کیت توسعه نرمافزار نیازی به دسترسی به اینترنت نیست.
نصب و ارزیابی افزونه
استفاده از شبیهساز Extensions برای ارزیابی اینکه آیا افزونهای نیازهای شما را برآورده میکند یا نه، ساده است.
فرض کنیم به Trigger Email
(firestore-send-email) افزونه علاقهمند هستید،
هرچند گردش کار زیر همه افزونهها را پوشش میدهد. وقتی با شبیهسازهای محلی اجرا شود،
Trigger Email بهطور خودکار از شبیهسازهای Cloud Firestore و
Cloud Functions استفاده میکند.
برای ارزیابی افزونه بهصورت محلی:
افزونه را به مانیفست افزونههای محلی اضافه کنید. مانیفست افزونهها فهرستی از نمونههای افزونه و پیکربندیهای آنها است.
firebase ext:install --local firebase/firestore-send-email
با اجرای فرمان بالا، از شما خواسته میشود جدیدترین نسخه افزونه
firebase/firestore-send-emailرا پیکربندی کنید و پیکربندی را در مانیفست ذخیره کنید، اما پیکربندی در پروژهتان مستقر نخواهد شد. برای کسب اطلاعات بیشتر درباره این موضوع، به مدیریت پیکربندی افزونهها با مانیفست مراجعه کنیدLocal Emulator Suite را مثل همیشه شروع کنید.
firebase emulators:start
اکنون، بااستفاده از نمونه افزونه firestore-send-email فهرستشده در
مانیفست شما، Local Emulator Suite کد منبع
آن افزونه را در ~/.cache/firebase/extensions بارگیری خواهد کرد. پساز بارگیری منابع، Local Emulator Suite شروع خواهد شد و میتوانید هرکدام از عملکردهای راهاندازیشده در پسزمینه افزونه را راهاندازی کنید و برنامهتان را به Local Emulator Suite متصل کنید تا ادغام آنها با برنامهتان را آزمایش کنید.
میتوانید از Emulator Suite UI برای افزودن داده به مجموعه اسناد ایمیل و راهاندازی دیگر منابع پسین، طبق نیاز افزونه Trigger Email، استفاده کنید.
بهجایآن، برای محیطهای آزمایشی غیرتعاملی مانند گردشهای کاری ادغام مداوم، میتوانید یک اسکریپت آزمایشی برای ارزیابی افزونه بنویسید که، در میان مراحل دیگر، دادههای Cloud Firestore لازم را پر میکند و توابع را راهاندازی میکند. سپس Local Emulator Suite را فراخوانی میکنید تا متن آزمایشیتان را اجرا کنید:
firebase emulators:exec my-test.shتفاوت آزمایش با شبیهساز Extensions با تولید
شبیهساز Extensions به شما امکان میدهد افزونهها را بهگونهای آزمایش کنید که بسیار شبیه به تجربه تولید باشد. بااینحال، تفاوتهایی با رفتار تولید وجود دارد.
Cloud IAM
«مجموعه شبیهساز Firebase» تلاش نمیکند هیچگونه رفتار مرتبط با IAM را برای اجرا تکرار کند یا به آن احترام بگذارد. شبیهسازها از «قوانین امنیتی Firebase» ارائهشده پیروی میکنند، اما در شرایطی که معمولاً از IAM استفاده میشود، برای مثال برای تنظیم حساب سرویس فراخواننده Cloud Functions و درنتیجه اجازهها، شبیهساز قابلپیکربندی نیست و از حساب دردسترس جهانی در ماشین توسعهدهنده شما استفاده میکند، مشابه اجرای مستقیم اسکریپت محلی.
محدودیت نوع راهانداز
در حال حاضر، Firebase Local Emulator Suite فقط از توابع راهاندازیشده با درخواست HTTP، راهاندازهای رویداد سفارشی Eventarc برای افزونهها، و توابع راهاندازیشده با رویداد پسزمینه برای Cloud Firestore، Realtime Database، Cloud Storage for Firebase، Authentication، و Pub/Sub پشتیبانی میکند. برای ارزیابی افزونههایی که از انواع دیگر توابع راهانداز استفاده میکنند، باید افزونهتان را در پروژه Firebase آزمایشی نصب کنید.
بعد چه میشود؟
- برای مجموعهای از ویدیوهای گلچینشده و مثالهای دقیق نحوه انجام کار، فهرست پخش آموزشی شبیهسازهای Firebase را دنبال کنید.