مانیفست افزونهها فهرستی از نمونههای افزونه و پیکربندیهای آنهاست. با مانیفست، میتوانید:
- پیکربندی افزونههای خود را با دیگران به اشتراک بگذارید
- پیکربندی افزونههای خود را بین پروژههای مختلف کپی کنید (مثلاً از پروژه آزمایشی به پروژه عملیاتی)
- همه افزونههای خود را به طور همزمان نصب کنید
- با استفاده از 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
پیکربندی افزونههای یک پروژه را اکسپورت کنید
برای ذخیره پیکربندی افزونههای فعلی یک پروژه در مانیفست، موارد زیر را انجام دهید:
- اگر قبلاً این کار را نکردهاید، Firebase CLI را راهاندازی کنید
- از طریق خط فرمان shell، به دایرکتوری پروژه بروید. (دایرکتوری پروژه شما حاوی فایل
firebase.jsonاست). - دستور
ext:exportرا اجرا کنید:firebase ext:export
دستور ext:export یک بخش extensions به فایل firebase.json اضافه میکند. علاوه بر این، دستور ext:export یک دایرکتوری extensions ) ایجاد میکند که حاوی یک فایل .env برای هر نمونه افزونهای است که نصب کردهاید. این فایلها حاوی پارامترهای پیکربندی برای هر نمونه هستند.
پیکربندی افزونهها را با Firebase Local Emulator Suite آزمایش کنید
پس از اینکه چند نمونه افزونه به فایل مانیفست افزونههای خود اضافه کردید، میتوانید آنها را با استفاده از Local Emulator Suite آزمایش کنید.
Local Emulator Suite را اجرا کنید :
- برای اجرای تعاملی Emulator Suite، دستور زیر را اجرا کنید:
firebase emulators:start - برای اجرای مجموعه شبیهساز و اجرای یک اسکریپت آزمایشی، دستور زیر را اجرا کنید:
firebase emulators:exec my-test.sh
- برای اجرای تعاملی Emulator Suite، دستور زیر را اجرا کنید:
حال، اگر نمونههای افزونهای را در مانیفست خود فهرست کردهاید، Local Emulator Suite کد منبع آن افزونهها را در ~/.cache/firebase/extensions دانلود میکند. پس از دانلود آنها، Local Emulator Suite اجرا میشود و شما میتوانید هر یک از توابع فعالشده در پسزمینه افزونهها را فعال کرده و برنامه خود را به Emulator suite متصل کنید تا ادغام آنها با برنامه خود را آزمایش کنید.
پیکربندی افزونهها را در یک پروژه مستقر کنید
پس از اینکه چند نمونه افزونه به مانیفست افزونه خود اضافه کردید، میتوانید آن را با استفاده از Firebase CLI در یک پروژه مستقر کنید. وقتی با مانیفست افزونهها مستقر میشوید، تمام نمونههای افزونه موجود در مانیفست را به طور همزمان در یک پروژه نصب، بهروزرسانی و پیکربندی میکنید.
برای استقرار یک افزونه در manifest:
- از طریق خط فرمان shell، به دایرکتوری که شامل پیکربندی افزونههای ذخیره شده است، بروید. (این دایرکتوری حاوی
firebase.jsonاست. اگر همین الانext:exportرا اجرا کردید، در حال حاضر در دایرکتوری صحیح هستید.) - دستور
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قرار دهید