انتقال افزونه‌های فایربیس به کیت‌های تابع

این راهنما به شما نشان می‌دهد که چگونه افزونه‌های خود را از محیط منسوخ‌شده‌ی Firebase Extensions به یک کیت تابع منتقل کنید که می‌توانید آن را در پایگاه کد Cloud Functions for Firebase (نسل دوم) خود نصب و پیاده‌سازی کنید.

Firebase Extensions تمام جنبه‌های ایجاد، به‌روزرسانی و حذف افزونه‌ها را مدیریت می‌کردند. کیت‌های تابع، قابلیت‌های افزونه‌ها را به عنوان Cloud Functions for Firebase بسته‌بندی می‌کنند. از آنجا که کیت‌های تابع Cloud Functions استاندارد هستند، شما آنها را با استفاده از رابط خط فرمان Firebase در پروژه Firebase خود ایجاد، به‌روزرسانی، حذف و عیب‌یابی می‌کنید. این راهنما شما را برای مدیریت توابع خود در حال حاضر و پذیرش به‌روزرسانی‌ها به محض در دسترس قرار گرفتن آنها آماده می‌کند.

در سراسر این راهنما، افزونه‌ی Stream Cloud Firestore to BigQuery ( firestore-bigquery-export ) به عنوان مثالی استفاده شده است که دستورات و خروجی دستورات را برای هر مرحله از مهاجرت به شما نشان می‌دهد.

مسیر مهاجرت خود را مشخص کنید

Firebase همه ناشران Firebase Extensions را تشویق می‌کند تا جایگزین‌هایی برای افزونه‌های خود به عنوان کیت‌های تابع منتشر شده در npm ایجاد کنند. می‌توانید از چند طریق مختلف بررسی کنید که آیا جایگزینی برای کیت تابع افزونه‌های شما در دسترس است یا خیر:

  • به صفحه افزونه‌ها در کنسول Firebase مربوط به پروژه خود بروید. هر افزونه‌ای که نصب کرده‌اید، نشان می‌دهد که آیا جایگزینی برای کیت تابع آن موجود است یا خیر.
  • دستور firebase ext:list در پروژه Firebase خود در ترمینال اجرا کنید تا ببینید کدام یک از افزونه‌های نصب شده شما جایگزین رسمی دارند:

    firebase ext:list --project my-project
    
    i  extensions: ensuring required API firebaseextensions.googleapis.com is enabled...
    ✔  extensions: required API firebaseextensions.googleapis.com is enabled
    i  extensions: list of extensions installed in my-project:
    ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐
    │ Extension                          │ Publisher │ Instance ID                    │ State  │ Version │ Your last update    │ Replacement Kit                                   │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/firestore-bigquery-export │ firebase  │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.2   │ 2026-06-10 18:35:03 │ @firebase-function-kits/firestore-bigquery-export │
    ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤
    │ firebase/storage-resize-images     │ firebase  │ storage-resize-images          │ ACTIVE │ 0.3.6   │ 2026-06-03 17:41:24 │                                                   │
    └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘
    ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
    

اگر جایگزین رسمی کیت تابع برای افزونه شما موجود است، می‌توانید آن را با استفاده از بخش Migrate to function kits در npm منتقل کنید.

اگر نمی‌توانید جایگزین منتشر شده‌ای پیدا کنید، می‌توانید کد افزونه را فورک کنید و جایگزین خودتان را ایجاد کنید زیرا همه افزونه‌ها متن‌باز هستند. برای انجام این کار، راهنمای «انتقال به یک کیت تابع خودساخته» را دنبال کنید.

انتخاب مسیر مهاجرت: مهاجرت به کیت‌های تابع در npm مهاجرت به یک کیت تابع خودساخته

مهاجرت به کیت‌های تابع در npm

محدودیت‌های مهاجرت شناخته‌شده را بررسی کنید

قبل از شروع انتقال یک نمونه افزونه، بررسی کنید که آیا تنظیمات شما از هر یک از ویژگی‌های زیر که نیاز به راه‌حل دارند یا هنوز در کیت‌های تابع پشتیبانی نمی‌شوند، استفاده می‌کند یا خیر:

  • مخازن سفارشی Docker و کلیدهای KMS نیاز به یک راه حل دستی دارند. Cloud Functions for Firebase از پارامترهای سیستم جایگزین برای پیکربندی یک مخزن سفارشی Docker یا کلید رمزگذاری مدیریت شده توسط مشتری (کلید KMS) پشتیبانی نمی‌کند. اگر افزونه شما هر یک از این پارامترها را پیکربندی می‌کند، به راه حل سوالات متداول مراجعه کنید.

قبل از اینکه شروع کنی

شما باید رابط خط فرمان Firebase CLI) را راه‌اندازی کرده و یک پروژه Firebase را راه‌اندازی اولیه کنید . هنگام استفاده از رابط خط فرمان، مطمئن شوید که firebase-tools نسخه >= 15.32.0 استفاده می‌کنید که دارای دستورات جدید migration و function kit است.

مجوزها و نقش‌های مورد نیاز حساب کاربری

بسته به آنچه که باید توسط Firebase CLI در طول مهاجرت ایجاد و پیکربندی شود، حسابی که برای تأیید اعتبار با Firebase و Google Cloud استفاده می‌کنید باید نقش‌های زیر را داشته باشد:

  • roles/firebaseextensions.editor
  • roles/cloudbuild.builds.editor
  • roles/artifactregistry.writer
  • roles/run.developer
  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountCreator
  • roles/cloudfunctions.admin (اگر نیاز به setIamPermissions برای نقاط انتهایی عمومی دارید)
  • roles/secretmanager.admin (در صورت استفاده از secretها)
  • roles/serviceusage.serviceUsageAdmin (اگر نیاز به فعال کردن API های جدید دارید)

توصیه می‌کنیم از حسابی استفاده کنید که قبلاً افزونه‌ها و توابع را نصب کرده باشد، زیرا اکثر این مجوزها از قبل اعطا شده‌اند. اگر حساب کاربری در حال انتقال شما به نقش‌های بیشتری نیاز دارد، دستورالعمل‌های Google Cloud IAM را برای اضافه کردن آنها دنبال کنید.

یک گردش کار CLI انتخاب کنید

برای مهاجرت از یک نمونه افزونه به یک کیت تابع موجود در npm، یکی از گزینه‌های زیر را انتخاب کنید:

  • (توصیه می‌شود) با استفاده از دستور ext:migrate محیط خط فرمان (CLI) مهاجرت کنید. این دستور، کیت تابع جایگزین شما را قبل از حذف نصب افزونه‌ای که جایگزین آن شده است، مستقر می‌کند.
  • با استفاده از دستورات خط فرمان (CLI) کیت‌های تابع، مهاجرت کنید. می‌توانید از دستورات جداگانه‌ای برای به‌روزرسانی افزونه، نصب کیت تابع، پیکربندی آن مانند افزونه، استقرار کیت و حذف افزونه استفاده کنید. این کار انعطاف‌پذیری بیشتری را برای مرتب‌سازی مجدد دستورات یا انجام کارهای اضافی بین مراحل فراهم می‌کند.

مهاجرت با استفاده از ext:migrate

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

firebase ext:migrate --project <project-id>

این دستور شما را راهنمایی می‌کند:

  1. انتخاب افزونه‌ای برای مهاجرت که جایگزین کیت تابع رسمی آن موجود باشد.
  2. انتخاب یک نمونه خاص از آن افزونه.
  3. در صورت لزوم، افزونه را به آخرین نسخه به‌روزرسانی کنید.
  4. نصب کیت تابع، پیکربندی یک نمونه دقیقاً مشابه پیکربندی نمونه افزونه.
  5. راه‌اندازی کیت تابع.
  6. تأیید اینکه کیت تابع با موفقیت مستقر شده و تمام قلاب‌های چرخه عمر، در صورت وجود، اجرا شده‌اند.
  7. حذف نصب افزونه.

اگر افزونه یا نمونه افزونه خاصی را که می‌خواهید منتقل کنید می‌دانید، آن را با استفاده از پرچم‌های خط فرمان زیر مشخص کنید:

firebase ext:migrate --extension firebase/firestore-bigquery-export --project <project-id>

# or

firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --project <project-id>

اگر بسته‌ی خاصی را که می‌خواهید به آن مهاجرت کنید می‌دانید، به خصوص اگر یک بسته‌ی جایگزین رسمی فهرست شده توسط گوگل نباشد، آن را با استفاده از پرچم --package مشخص کنید:

firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --package @firebase-function-kits/firestore-bigquery-export --project <project-id>

تأیید استقرار کیت تابع

برای تأیید اینکه firebase deploy کیت هیچ خطایی نداشته است، گزارش‌های استقرار را بررسی کنید تا ببینید آیا قلاب‌های چرخه عمر فعال شده‌اند یا خیر. افزونه‌های محبوب، مانند Stream Cloud Firestore به BigQuery ، از قلاب‌های چرخه عمر استفاده می‌کنند. در زیر مثالی از نحوه نمایش یک قلاب چرخه عمر هنگام فعال شدن آمده است:

i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i  functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project

این پیام‌های لاگ موارد زیر را تأیید می‌کنند:

  • یک قلاب چرخه عمر پیدا و اجرا شد.
  • یک وظیفه در صف وظیفه مرتبط با قلاب چرخه عمر قرار گرفته است.
  • پیوندی به Cloud Logging ارائه شده است تا بتوانید تأیید کنید که کار بدون خطا انجام شده است.

برای تأیید اینکه هیچ خطایی در گزارش‌ها وجود ندارد و رویداد صف وظایف شما با موفقیت پردازش شده است، پیوند گزارش‌ها را به کنسول Google Cloud دنبال کنید. اگر رویداد چرخه عمر با موفقیت اجرا نشد، می‌توانید با اجرای دستور زیر آن را دوباره فعال کنید:

firebase functions:lifecycle:run <hook-name> <codebase>

اگر برای اولین بار است که یک نمونه کیت تابع را مستقر می‌کنید، دستور زیر را اجرا کنید:

firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>

اگر در هر زمانی در طول اعتبارسنجی تصمیم گرفتید که این مهاجرت را متوقف یا لغو کنید، می‌توانید کیت را با استفاده از دستورالعمل‌های موجود در بخش «حذف افزونه» حذف نصب کنید.

کیت تابع README را مرور کنید

برخی از کیت‌ها ممکن است به کارهای اضافی فراتر از آنچه که به طور خودکار توسط کیت‌های تابع انجام می‌شود، نیاز داشته باشند. README مربوط به کیتی که نصب می‌کنید را مطالعه کنید و دستورالعمل‌های اضافی را دنبال کنید.

مهاجرت با استفاده از رابط خط فرمان کیت‌های تابع

قبل از شروع، شناسه نمونه افزونه‌ای که می‌خواهید به یک کیت منتقل کنید و نام بسته npm کیت جایگزین آن را شناسایی و یادداشت کنید. می‌توانید هر دوی این موارد را با استفاده از خروجی firebase ext:list پیدا کنید. برای مثالی از استفاده از ext:list به بخش تعیین مسیر مهاجرت خود مراجعه کنید.

۱. افزونه خود را به آخرین نسخه ارتقا دهید

شما باید افزونه خود را به آخرین نسخه به‌روزرسانی کنید تا تفاوت بین نمونه افزونه شما و کیت جایگزین آن به حداقل برسد. اگر افزونه شما ارتقا داده نشود، ممکن است تغییرات قابل توجه و مخربی بین نمونه افزونه شما و کیت جایگزین آن وجود داشته باشد. پیکربندی صادر شده ممکن است به دلیل تغییرات پارامترها در نسخه‌های مختلف، با آنچه کیت انتظار دارد مطابقت نداشته باشد.

بسته به محل نصب افزونه، از یکی از گزینه‌های زیر برای به‌روزرسانی آن استفاده کنید:

  • از کنسول Firebase
  • از رابط خط فرمان Firebase با استفاده از:
    • firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>

اگر از این مرحله صرف نظر کنید، رابط خط فرمان (CLI) هنگام خروجی گرفتن از پیکربندی، اگر افزونه شما آخرین نسخه نباشد، از شما می‌خواهد که آن را ارتقا دهید.

۲. نمونه کیت تابع جایگزین را بررسی و نصب کنید

شما می‌توانید کیت تابع را با استفاده از دستور CLI زیر نصب کنید:

firebase functions:kits:install --template migration --no-configure --package <npm-package-name> --project <project-id>

وقتی در حین نصب، یک شناسه نمونه برای کیت خود انتخاب می‌کنید، حتماً آن را برای استفاده بعدی در دستورالعمل‌های مهاجرت یادداشت کنید.

پس از نصب کیت، یک دایرکتوری جدید در پروژه Firebase شما با مکانی مانند function-kits/<kit-name>/source ایجاد می‌شود که شامل بسته npm به همراه کیت جایگزین افزونه شما و یک فایل index.ts پایه است که آن توابع را برای Firebase جهت استقرار و تنظیم پیکربندی سفارشی، اکسپورت می‌کند.

فایل README مربوط به کیت را مطالعه کنید و دستورالعمل‌های اضافی ذکر شده در آن را دنبال کنید.

اگر چندین نمونه از کیت را در یک پروژه دارید، می‌توانید این دستور را برای ایجاد نمونه‌های جدید از همان کیت تکرار کنید. همچنین می‌توانید یک نمونه کیت را در دو پروژه مختلف Firebase با پیکربندی‌های مختلف (مثلاً یک پروژه مرحله‌بندی و یک پروژه تولید) مستقر کنید. برای کسب اطلاعات بیشتر در مورد این تنظیمات پیشرفته، به بخش مهاجرت‌های پیشرفته مراجعه کنید.

مثال کار شده:

firebase functions:kits:install --template migration --no-configure --package @firebase-function-kits/firestore-bigquery-export --project my-project

۳. نمونه کیت تابع را دقیقاً مشابه افزونه پیکربندی کنید

شما باید این نمونه کیت را با پیکربندی مشابه افزونه‌ای که جایگزین آن می‌شود، سفارشی‌سازی کنید. می‌توانید پیکربندی نمونه افزونه خود را در یک فایل .env اکسپورت کنید، که پارامترها، متغیرهای محیطی و داده‌های پیکربندی مرجع مخفی را برای همه Cloud Functions ، از جمله کیت‌ها، ذخیره می‌کند. برای اکسپورت مستقیم آن به فایل پیکربندی کیت خود، دستور زیر را اجرا کنید:

firebase ext:export --mode functions --instance <extension-instance-id> --kit-instance <kit-instance-id> --project <project-id>

در پایان این مرحله، اطلاعات پیکربندی این نمونه در یک فایل .env مخصوص پروژه در دایرکتوری پیکربندی نمونه شما ذخیره می‌شود، مانند: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>

۴. کیت جایگزین را مستقر و تأیید کنید

اکنون که کیت نصب شده و به عنوان مجموعه‌ای از توابع در دسترس است، می‌توانید جایگزین کیت را مستقر کنید. کیت‌های تابع مانند توابع استاندارد کار می‌کنند، که در آن هر نمونه کیت به عنوان یک پایگاه کد جداگانه برای سازماندهی توابع شما عمل می‌کند. می‌توانید انتخاب کنید که تمام توابع خود یا فقط یک نمونه کیت خاص را مستقر کنید. هنگام مهاجرت یک نمونه افزونه، فقط آن نمونه کیت را مستقر کنید.

اگر کیت شما از پارامترهای جدیدی استفاده کند که در نمونه افزونه‌ای که از آن مهاجرت کرده‌اید وجود نداشته‌اند، رابط خط فرمان Firebase در ابتدای فرآیند استقرار، آن‌ها را از شما درخواست می‌کند. در این مثال کاربردی از یک افزونه به‌روز firestore-bigquery-export ، انتظار نمی‌رود که این اتفاق بیفتد، اما بسیاری از کیت‌ها برای هر منبع رویدادی که توسط کیت استفاده می‌شود، پارامتر جدیدی را درخواست می‌کنند. به عنوان بخشی از این مهاجرت، کیت‌های به‌روز شده از توابع نسل دوم استفاده می‌کنند، در حالی که افزونه‌ها قبلاً از توابع نسل اول استفاده می‌کردند. در نسل دوم، توابع در نزدیکی منابع رویداد خود قرار دارند و به عنوان یک پارامتر اضافی اضافه می‌شوند. در به‌روزرسانی‌های بعدی، اگر پارامترهای جدیدی اضافه شوند، رابط خط فرمان در مورد استقرار بعدی به شما اطلاع می‌دهد.

مثال کار شده:

firebase deploy --only functions:firestore-bigquery-export --project my-project

خروجی:

=== Deploying to 'my-project'...
i  deploying functions
i  functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i  functions: ensuring required API bigquery.googleapis.com is enabled...
i  functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔  functions: required APIs are enabled
i  functions: granting declarative IAM roles to managed service account:
   - BigQuery Data Editor
   - BigQuery User
   - Cloud Datastore User
   - Eventarc Event Receiver
   - roles/run.invoker
✔  functions: successfully granted IAM roles
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i  functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔  functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔  functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.
✔  Deploy complete!

برای تأیید اینکه firebase deploy کیت هیچ خطایی نداشته است، گزارش‌های استقرار را بررسی کنید تا ببینید آیا قلاب‌های چرخه عمر فعال شده‌اند یا خیر. افزونه‌های محبوب، مانند Stream Cloud Firestore به BigQuery ، از قلاب‌های چرخه عمر استفاده می‌کنند. در زیر مثالی از نحوه نمایش یک قلاب چرخه عمر هنگام فعال شدن آمده است:

i  functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔  functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i  functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project

این پیام‌های لاگ موارد زیر را تأیید می‌کنند:

  • یک قلاب چرخه عمر پیدا و اجرا شد.
  • یک وظیفه در صف وظیفه مرتبط با قلاب چرخه عمر قرار گرفته است.
  • پیوندی به Cloud Logging ارائه شده است تا بتوانید تأیید کنید که کار بدون خطا انجام شده است.

برای تأیید اینکه هیچ خطایی در گزارش‌ها وجود ندارد و رویداد صف وظایف شما با موفقیت پردازش شده است، پیوند گزارش‌ها را به کنسول Google Cloud دنبال کنید. اگر رویداد چرخه عمر با موفقیت اجرا نشد، می‌توانید با اجرای دستور زیر آن را دوباره فعال کنید:

firebase functions:lifecycle:run <hook-name> <codebase>

اگر برای اولین بار است که یک نمونه کیت تابع را مستقر می‌کنید، دستور زیر را اجرا کنید:

firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>

اگر در هر زمانی در طول اعتبارسنجی تصمیم گرفتید که این مهاجرت را متوقف یا لغو کنید، می‌توانید کیت را با استفاده از دستورالعمل‌های موجود در بخش «حذف افزونه» حذف نصب کنید.

۵. افزونه را حذف نصب کنید

وقتی کیت تابع پیاده‌سازی‌شده‌ی خود را تأیید کردید، می‌توانید افزونه‌ی خود را حذف نصب کنید تا رفتار آن را یک بار برای کیت و یک بار برای افزونه تکرار نکنید. می‌توانید تمام افزونه‌ها را از رابط خط فرمان Firebase ، صرف نظر از نحوه‌ی نصب آنها، حذف نصب کنید، اگر پرچم --immediate پاس دهید:

firebase ext:uninstall <extension-instance-id> --project <project-id> --immediate

مثال کار شده:

firebase ext:uninstall firestore-bigquery-export --project my-project --immediate

خروجی:

i  extensions: uninstalling firestore-bigquery-export...
i  extensions: deleting extension instance resources in project my-project...
✔  extensions: successfully uninstalled firestore-bigquery-export

مهاجرت‌های پیشرفته

شما می‌توانید افزونه‌هایی را در چندین پروژه Firebase داشته باشید که می‌خواهید با یک کدبیس واحد مدیریت کنید. برای مثال، اگر زیرساخت یکسانی را در یک محیط testing و یک محیط production مستقر کنید، که هر کدام یک نمونه documents Cloud Firestore دارند که به BigQuery صادر می‌کنید، ممکن است دو نمونه از افزونه firestore-bigquery-export نصب شده داشته باشید:

  • export-documents-testing
  • export-documents-production

اگر هنگام کار با Firebase CLI، این دو نمونه افزونه را به دو نمونه کیت تابع در یک کدبیس واحد منتقل کرده و با استفاده از firebase deploy --project testing و firebase deploy --project production مستقر کرده باشید، هر استقرار، دو نمونه در محیط‌های testing و production ایجاد می‌کند.

در عوض، دو نمونه افزونه را با یک نمونه کیت تابع از firestore-bigquery-export که در چندین پروژه مستقر شده است، جایگزین کنید، که در آن هر پروژه پیکربندی خاص خود را دارد. دایرکتوری پیکربندی شما برای این نمونه باید مانند زیر باشد:

  • config-export-documents/
    • .env.testing
    • .env.production

هر بار که کیت شما برای testing و production آماده می‌شود، یک نمونه از آن با پیکربندی مربوطه ایجاد می‌شود. دستورات CLI موجود، مادامی که در هر فراخوانی ext:migrate یا functions:kits:install ، پرچم --project را وارد کنید، این تنظیمات را ایجاد می‌کنند.

مثال کار شده:

firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project testing --no-configure --template migration
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? export-documents
✔  Wrote function-kits/firestore-bigquery-export/source/package.json
✔  Wrote function-kits/firestore-bigquery-export/source/tsconfig.json
✔  Wrote function-kits/firestore-bigquery-export/source/.gitignore
✔  Wrote function-kits/firestore-bigquery-export/source/src/index.ts
i  functions: Running npm install
✔  Wrote configuration info to firebase.json
✔  functions: Function kit firestore-bigquery-export successfully installed.
# This creates the export-documents instance with an empty .env.testing file
# for the testing project. Now populate it via export:
firebase ext:export --mode functions --instance export-documents-testing \
  --kit-instance export-documents --project testing

# Repeat the export for production into the same kit instance to create
# .env.production from the export-documents-prod instance:
firebase ext:export --mode functions --instance export-documents-prod \
  --kit-instance export-documents --project production

اکنون یک نمونه کیت واحد دارید که برای استقرار در پروژه‌های testing و production شما با پیکربندی‌های مربوطه پیکربندی شده است. اگر یک نمونه در پروژه testing ایجاد کنید و دستور functions:kits:install را برای همان بسته در پروژه production اجرا کنید، از شما خواسته می‌شود که از نمونه پیکربندی شده برای testing دوباره استفاده کنید یا یک نمونه دوم نصب کنید.