قبل از استفاده از شبیهساز Extensions با برنامه خود، مطمئن شوید که گردش کار کلی Firebase Local Emulator Suite را درک کردهاید ، و Local Emulator Suite را نصب و پیکربندی کردهاید و دستورات CLI آن را بررسی کردهاید.
این راهنما همچنین فرض میکند که شما با Firebase Extensions و نحوه استفاده از آنها در برنامههای فایربیس خود آشنا هستید.
با شبیهساز Extensions چه کارهایی میتوانم انجام دهم؟
با شبیهساز Extensions ، میتوانید افزونهها را در یک محیط محلی امن نصب و مدیریت کنید و ضمن به حداقل رساندن هزینههای صدور صورتحساب، قابلیتهای آنها را بهتر درک کنید. این شبیهساز توابع افزونه شما را به صورت محلی اجرا میکند، از جمله توابع فعالشده توسط رویداد پسزمینه با استفاده از شبیهسازهای Cloud Firestore ، Realtime Database ، Cloud Storage for Firebase ، Authentication و Pub/Sub و توابع فعالشده توسط Eventarc که در Cloud Functions نسخه ۲ پیادهسازی شدهاند.
یک پروژه فایربیس انتخاب کنید
Firebase Local Emulator Suite محصولات مربوط به یک پروژه فایربیس را شبیهسازی میکند.
برای انتخاب پروژه مورد استفاده، قبل از شروع شبیهسازها، در CLI firebase use در دایرکتوری کاری خود اجرا کنید. یا میتوانید پرچم --project را به هر دستور شبیهساز ارسال کنید.
Local Emulator Suite از شبیهسازی پروژههای واقعی Firebase و پروژههای آزمایشی پشتیبانی میکند.
| نوع پروژه | ویژگیها | استفاده با شبیهسازها |
|---|---|---|
| واقعی | یک پروژه واقعی Firebase، پروژهای است که شما ایجاد و پیکربندی کردهاید (به احتمال زیاد از طریق کنسول Firebase ). پروژههای واقعی منابع زندهای دارند، مانند نمونههای پایگاه داده، مخازن ذخیرهسازی، توابع یا هر منبع دیگری که برای آن پروژه Firebase تنظیم کردهاید. | هنگام کار با پروژههای واقعی Firebase، میتوانید شبیهسازها را برای هر یا همه محصولات پشتیبانیشده اجرا کنید. برای هر محصولی که شبیهسازی نمیکنید، برنامهها و کد شما با منبع زنده (نمونه پایگاه داده، مخزن ذخیرهسازی، تابع و غیره) تعامل خواهند داشت. |
| نسخه آزمایشی | یک پروژه آزمایشی فایربیس هیچ پیکربندی واقعی فایربیس و هیچ منبع زندهای ندارد. این پروژهها معمولاً از طریق codelabs یا سایر آموزشها قابل دسترسی هستند. شناسههای پروژه برای پروژههای نمایشی دارای پیشوند | هنگام کار با پروژههای آزمایشی Firebase، برنامهها و کد شما فقط با شبیهسازها تعامل دارند. اگر برنامه شما سعی کند با منبعی که شبیهساز برای آن اجرا نمیشود، تعامل داشته باشد، آن کد با شکست مواجه خواهد شد. |
توصیه میکنیم تا حد امکان از پروژههای نمایشی استفاده کنید. مزایا عبارتند از:
- راهاندازی آسانتر، زیرا میتوانید شبیهسازها را بدون ایجاد یک پروژه Firebase اجرا کنید
- ایمنی قویتر، زیرا اگر کد شما بهطور تصادفی منابع شبیهسازی نشده (تولیدی) را فراخوانی کند، هیچ شانسی برای تغییر دادهها، استفاده و صدور صورتحساب وجود ندارد.
- پشتیبانی آفلاین بهتر، زیرا نیازی به دسترسی به اینترنت برای دانلود پیکربندی SDK شما نیست.
نصب و ارزیابی یک افزونه
استفاده از شبیهساز 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 برای اضافه کردن دادهها به مجموعه اسناد ایمیل و تنظیم سایر منابع backend، طبق الزامات افزونه Trigger Email، استفاده کنید.
از طرف دیگر، برای محیطهای تست غیر تعاملی مانند گردشهای کاری یکپارچهسازی مداوم، میتوانید یک اسکریپت تست برای ارزیابی افزونه بنویسید که در کنار سایر مراحل، دادههای لازم Cloud Firestore را جمعآوری کرده و توابع را فعال میکند. سپس میتوانید Local Emulator Suite را برای اجرای اسکریپت تست خود فراخوانی کنید:
firebase emulators:exec my-test.shچگونه آزمایش با شبیهساز Extensions با نسخه اصلی متفاوت است
شبیهساز Extensions به شما امکان میدهد افزونهها را به روشی آزمایش کنید که با تجربه تولید مطابقت نزدیکی داشته باشد. با این حال، تفاوتهایی با رفتار تولید وجود دارد.
مدیریت دسترسی ابری (IAM)
مجموعه شبیهساز Firebase تلاشی برای تکرار یا رعایت هیچ رفتار مرتبط با IAM برای اجرا نمیکند. شبیهسازها به قوانین امنیتی Firebase ارائه شده پایبند هستند، اما در موقعیتهایی که معمولاً از IAM استفاده میشود، به عنوان مثال برای تنظیم توابع ابری که حساب سرویس و در نتیجه مجوزها را فراخوانی میکنند، شبیهساز قابل تنظیم نیست و از حساب کاربری سراسری موجود در دستگاه توسعهدهنده شما استفاده میکند، مشابه اجرای مستقیم یک اسکریپت محلی.
محدودیت نوع تحریک
در حال حاضر، Firebase Local Emulator Suite فقط از توابع فعالشده توسط درخواست HTTP، محرکهای رویداد سفارشی Eventarc برای افزونهها و توابع فعالشده توسط رویداد پسزمینه برای Cloud Firestore ، Realtime Database ، Cloud Storage for Firebase ، Authentication و Pub/Sub پشتیبانی میکند. برای ارزیابی افزونههایی که از انواع دیگر توابع فعالشده استفاده میکنند، باید افزونه خود را در یک پروژه آزمایشی Firebase نصب کنید .
بعدش چی؟
- برای مجموعهای منتخب از ویدیوها و مثالهای آموزشی دقیق، لیست پخش آموزش شبیهسازهای Firebase را دنبال کنید.