تنظیمات پروژه را با مانیفست Extensions مدیریت کنید

مانیفست افزونه ها فهرستی از نمونه های برنامه افزودنی و پیکربندی های آنها است. با مانیفست، می توانید:

  • پیکربندی برنامه های افزودنی خود را با دیگران به اشتراک بگذارید
  • پیکربندی برنامه‌های افزودنی خود را بین پروژه‌های مختلف کپی کنید (مانند پروژه مرحله‌ای تا پروژه تولیدتان)
  • همه برنامه های افزودنی خود را به یکباره مستقر کنید
  • نحوه کار برنامه های افزودنی خود را با استفاده از Firebase Local Emulator Suite آزمایش کنید
  • پیکربندی برنامه های افزودنی خود را به کنترل منبع متعهد کنید
  • برنامه های افزودنی را در خط لوله CI/CD خود قرار دهید

مانیفست افزونه دو بخش دارد:

  • بخش extensions firebase.json شما، که نقشه‌ای از شناسه نمونه به مرجع نسخه برنامه افزودنی است. به عنوان مثال:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • فایل‌های .env حاوی پیکربندی برای هر یک از نمونه‌های برنامه افزودنی شما، در extensions/ زیر فهرست راهنمای پروژه Firebase شما. به عنوان مثال، نمونه ای از storage-resize-images ممکن است یک فایل .env مانند شکل زیر داشته باشد:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

یک مانیفست پسوند ایجاد کنید

سه راه برای ساخت مانیفست پسوند وجود دارد:

  • مانیفست برنامه های افزودنی خود را با Firebase CLI مدیریت کنید
  • پیکربندی برنامه های افزودنی پروژه را صادر کنید
  • فایل های مانیفست را به صورت دستی ویرایش کنید

دو روش اول در زیر توضیح داده شده است.

مانیفست برنامه های افزودنی خود را با Firebase CLI مدیریت کنید

شما می توانید اکثر دستورات ext: Firebase CLI را با گزینه --local برای به روز رسانی مانیفست برنامه های افزودنی بدون تغییر پیکربندی فعلی پروژه اجرا کنید.

به عنوان مثال:

firebase ext:install --local firebase/firestore-bigquery-export

اجرای دستور بالا از شما می خواهد که آخرین نسخه افزونه firebase/firestore-bigquery-export را پیکربندی کنید و پیکربندی را در مانیفست ذخیره کنید، اما پیکربندی را در پروژه شما پیاده نمی کند.

در اینجا چند نمونه دیگر از دستوراتی وجود دارد که مانیفست برنامه‌های افزودنی را تغییر می‌دهند:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

پیکربندی برنامه های افزودنی پروژه را صادر کنید

برای ذخیره پیکربندی برنامه های افزودنی فعلی پروژه در مانیفست، موارد زیر را انجام دهید:

  1. اگر قبلاً این کار را نکرده‌اید، Firebase CLI را راه‌اندازی کنید
  2. از یک درخواست پوسته، به دایرکتوری پروژه تغییر دهید. (دایرکتوری پروژه شما حاوی فایل firebase.json است).
  3. دستور ext:export را اجرا کنید:
    firebase ext:export

دستور ext:export یک بخش extensions به فایل firebase.json اضافه می کند. علاوه بر این، دستور ext:export برای هر نمونه پسوندی که نصب کرده‌اید، یک دایرکتوری extensions حاوی یک فایل .env ایجاد می‌کند. این فایل ها شامل پارامترهای پیکربندی برای هر نمونه هستند.

پیکربندی برنامه های افزودنی را با Firebase Local Emulator Suite آزمایش کنید

هنگامی که چند نمونه برنامه افزودنی را به مانیفست برنامه‌های افزودنی خود اضافه کردید، می‌توانید آنها را با استفاده از Local Emulator Suite آزمایش کنید.

  1. Local Emulator Suite را نصب و پیکربندی کنید .

  2. Local Emulator Suite را راه اندازی کنید :

    • برای اجرای تعاملی Emulator Suite، اجرا کنید: firebase emulators:start
    • برای اجرای Emulator Suite و اجرای یک اسکریپت آزمایشی، اجرا کنید: firebase emulators:exec my-test.sh

اکنون، اگر نمونه های برنامه افزودنی را در مانیفست خود فهرست کنید، Local Emulator Suite کد منبع آن برنامه های افزودنی را در ~/.cache/firebase/extensions دانلود می کند. پس از دانلود، Local Emulator Suite شروع می‌شود و می‌توانید هر یک از عملکردهای فعال در پس‌زمینه برنامه‌های افزودنی را فعال کنید و برنامه خود را به مجموعه Emulator متصل کنید تا ادغام آنها را با برنامه خود آزمایش کنید.

یک پیکربندی افزونه را در یک پروژه مستقر کنید

هنگامی که چند نمونه برنامه افزودنی را به مانیفست برنامه افزودنی خود اضافه کردید، می توانید آن را با استفاده از Firebase CLI در یک پروژه مستقر کنید. وقتی با یک مانیفست برنامه‌های افزودنی مستقر می‌شوید، همه نمونه‌های برنامه افزودنی موجود در مانیفست را به یکباره نصب، به‌روزرسانی و پیکربندی می‌کنید.

برای استقرار مانیفست افزونه:

  1. از یک درخواست پوسته، به دایرکتوری که حاوی پیکربندی پسوندهای ذخیره شده است تغییر دهید. (این دایرکتوری حاوی firebase.json است. اگر فقط ext:export اجرا کرده اید، در حال حاضر در دایرکتوری درستی هستید.)
  2. دستور deploy را اجرا کنید. اگر می‌خواهید افزونه‌ها را در پروژه‌ای غیر از پروژه فعلی مستقر کنید، --project= نیز مشخص کنید:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

دستور deploy هر پیکربندی نمونه را تأیید می‌کند، از شما می‌پرسد که آیا می‌خواهید نمونه‌های برنامه افزودنی را که در firebase.json فهرست نشده‌اند را از پروژه مقصد خود حذف کنید، و سپس همه نمونه‌های برنامه افزودنی خود را مستقر کنید.

تنظیمات برنامه افزودنی خاص پروژه

تنظیمات برنامه های افزودنی ذخیره شده را می توان برای استقرار در چندین پروژه مختلف استفاده کرد: به عنوان مثال، یک پروژه مرحله بندی و یک پروژه تولید. هنگام انجام این کار، برخی از مقادیر پارامتر ممکن است برای هر پروژه متفاوت باشد. فایل‌های .env ویژه پروژه این امکان را فراهم می‌کنند:

  • مقادیر پارامترهایی را که بین پروژه‌ها در extensions/ EXTENSION_INSTANCE_ID .env. YOUR_PROJECT_ID
  • مقادیر پارامترهای مشترک را در extensions/ EXTENSION_INSTANCE_ID .env قرار دهید.

گاهی اوقات، ممکن است بخواهید هنگام شبیه سازی برنامه های افزودنی خود از یک مقدار پارامتر متفاوت استفاده کنید: برای مثال، ممکن است بخواهید به جای کلید تولید، یک کلید API آزمایشی ارائه دهید. این پارامترها را در یک فایل .local قرار دهید:

  • پارامترهای غیر محرمانه ای را که می خواهید در حین شبیه سازی استفاده کنید در extensions/ EXTENSION_INSTANCE_ID .env.local قرار دهید
  • مقادیر پارامتر مخفی را در extensions/ EXTENSION_INSTANCE_ID .secret.local