مانیفست افزونهها فهرستی از نمونههای افزونه و پیکربندیهای آنها است. با مانیفست میتوانید:
- پیکربندی افزونههایتان را با دیگران همرسانی کنید
- پیکربندی افزونههایتان را بین پروژههای مختلف کپی کنید (مثلاً از پروژه مرحلهای به پروژه تولیدی)
- همه افزونههایتان را یکجا مستقر کنید
- بااستفاده از 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}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
ایجاد مانیفست افزونهها
سه روش برای ساختن مانیفست افزونهها وجود دارد:
- مدیریت مانیفست افزونهها با واسط خط فرمان Firebase
- صادر کردن پیکربندی افزونههای پروژه
- فایلهای مانیفست را بهصورت دستی ویرایش کنید
دو روش اول در زیر توضیح داده شده است.
مدیریت مانیفست افزونهها با واسط خط فرمان Firebase
میتوانید اکثر فرمانهای ext: «واسط خط فرمان Firebase» را با گزینه --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
صادر کردن پیکربندی افزونههای پروژه
برای ذخیره کردن پیکربندی افزونههای فعلی پروژه در مانیفست، کارهای زیر را انجام دهید:
- اگر قبلاً این کار را نکردهاید، واسط خط فرمان Firebase را راهاندازی کنید
- از پیامواره پوسته، به دایرکتوری پروژه بروید. (فایل
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 را شروع کنید:
- برای اجرای تعاملی «مجموعه شبیهساز»، این فرمان را اجرا کنید:
firebase emulators:start - برای اجرای «مجموعه شبیهساز» و اجرای اسکریپت آزمایشی، این دستور را اجرا کنید:
firebase emulators:exec my-test.sh
- برای اجرای تعاملی «مجموعه شبیهساز»، این فرمان را اجرا کنید:
اکنون، اگر نمونههای افزونه در مانیفست شما فهرست شده باشد،
Local Emulator Suite کد منبع آن افزونهها را در
~/.cache/firebase/extensions بارگیری خواهد کرد. پساز بارگیری،
Local Emulator Suite شروع خواهد شد و میتوانید هرکدام از
عملکردهای راهاندازیشده در پسزمینه افزونهها را راهاندازی کنید و برنامهتان را به مجموعه «شبیهساز»
متصل کنید تا ادغام آنها با برنامهتان را آزمایش کنید.
استقرار پیکربندی افزونهها در پروژه
پساز افزودن چند نمونه افزونه به مانیفست افزونهتان، میتوانید آن را بااستفاده از واسط خط فرمان Firebase در پروژهای مستقر کنید. وقتی با مانیفست افزونهها استقرار میکنید، همه نمونههای افزونه در مانیفست را بهطور همزمان در یک پروژه نصب، بهروزرسانی، و پیکربندی میکنید.
برای استقرار مانیفست افزونهها:
- از اعلان پوسته، به دایرکتوری حاوی پیکربندی افزونههای ذخیرهشده بروید. (این دایرکتوری حاوی
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قرار دهید.
گاهی اوقات، ممکن است بخواهید هنگام شبیهسازی افزونههایتان از مقدار پارامتر متفاوتی استفاده کنید: برای مثال، ممکن است بخواهید بهجای کلید میانای برنامهسازی کاربردی تولید، کلید میانای برنامهسازی کاربردی آزمایشی ارائه دهید. این پارامترها را در فایل .local قرار دهید:
- پارامترهای غیرمحرمانهای را که میخواهید درطول شبیهسازی استفاده کنید در
extensions/EXTENSION_INSTANCE_ID.env.localقرار دهید - مقادیر پارامتر رمز را در
extensions/EXTENSION_INSTANCE_ID.secret.localقرار دهید