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

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

  • پیکربندی افزونه‌های خود را با دیگران به اشتراک بگذارید
  • پیکربندی افزونه‌های خود را بین پروژه‌های مختلف کپی کنید (مثلاً از پروژه آزمایشی به پروژه عملیاتی)
  • همه افزونه‌های خود را به طور همزمان نصب کنید
  • با استفاده از Firebase Local Emulator Suite نحوه عملکرد افزونه‌های خود را با برنامه‌تان آزمایش کنید.
  • پیکربندی افزونه‌های خود را به کنترل منبع (source control) بسپارید
  • افزونه‌ها را در خط تولید 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}.firebasestorage.app
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

ایجاد یک مانیفست افزونه‌ها

سه راه برای ساخت یک فایل manifest افزونه وجود دارد:

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

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

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

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

برای مثال:

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. از طریق خط فرمان shell، به دایرکتوری پروژه بروید. (دایرکتوری پروژه شما حاوی فایل 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
    • برای اجرای مجموعه شبیه‌ساز و اجرای یک اسکریپت آزمایشی، دستور زیر را اجرا کنید: firebase emulators:exec my-test.sh

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

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

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

برای استقرار یک افزونه در manifest:

  1. از طریق خط فرمان shell، به دایرکتوری که شامل پیکربندی افزونه‌های ذخیره شده است، بروید. (این دایرکتوری حاوی 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 نسخه اصلی، یک کلید API آزمایشی ارائه دهید. این پارامترها را در یک فایل .local قرار دهید:

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