Firebase Extensions'ı kendi oluşturduğunuz bir işlev kitine taşıma

Taşıma yolunu seçin: npm'deki işlev kitlerine geçiş yapma Kendi oluşturduğunuz işlev kitine geçiş yapma

Yayıncı, npm'de dağıtılan resmi bir yedek kit oluşturmadıysa bu kılavuzda, uzantısını çatallama ve yerel bir işlev kiti olarak ayarlama adımları açıklanmaktadır.

Bilinen taşıma sınırlamalarını kontrol etme

Bir uzantı örneğini taşımaya başlamadan önce, kurulumunuzda geçici çözüm gerektiren veya işlev kitlerinde henüz desteklenmeyen aşağıdaki özelliklerden herhangi birinin kullanılıp kullanılmadığını kontrol edin:

  • Özel Docker depoları ve KMS anahtarları için manuel bir geçici çözüm gerekir Cloud Functions for Firebase, özel bir Docker deposu veya müşteri tarafından yönetilen şifreleme anahtarı (KMS anahtarı) yapılandırmak için sistem parametrelerinin değiştirilmesini desteklemez. Uzantınız bu parametrelerden birini yapılandırıyorsa SSS'deki geçici çözüme bakın.

Başlamadan önce

Firebase CLI'yı kurmanız ve bir Firebase projesi başlatmanız gerekir. KSA'yı kullanırken yeni taşıma ve işlev kiti komutlarını içeren firebase-tools sürüm >= 15.32.0'i kullandığınızdan emin olun.

Gerekli hesap izinleri ve rolleri

Taşıma sırasında Firebase CLI tarafından oluşturulması ve yapılandırılması gerekenlere bağlı olarak, Firebase ve Google Cloud ile kimlik doğrulaması yapmak için kullandığınız hesabın aşağıdaki rollere sahip olması gerekir:

  • roles/firebaseextensions.editor
  • roles/cloudbuild.builds.editor
  • roles/artifactregistry.writer
  • roles/run.developer
  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountCreator
  • roles/cloudfunctions.admin (Herkese açık uç noktalar için setIamPermissions yapmanız gerekiyorsa)
  • roles/secretmanager.admin (gizli anahtarlar kullanılıyorsa)
  • roles/serviceusage.serviceUsageAdmin (yeni API'leri etkinleştirmeniz gerekiyorsa)

Bu izinlerin çoğu zaten verilmiş olacağından, daha önce uzantı yüklemiş ve işlev dağıtmış bir hesap kullanmanızı öneririz. Taşıma işlemini gerçekleştiren hesabınızın daha fazla role ihtiyacı varsa bunları eklemek için Google Cloud IAM talimatlarını uygulayın.

Uzantı örneğinizi en yeni sürüme yükseltme

Uzantı örneğiniz ile değiştirme kiti arasındaki farkı en aza indirmek için uzantınızı en yeni sürüme güncellemeniz gerekir. Uzantınız yükseltilmezse uzantı örneğiniz ile kit değişimi arasında önemli ve zarar veren değişiklikler olabilir. Dışa aktarılan yapılandırma, sürümler arasındaki parametre değişiklikleri nedeniyle kitin beklediğiyle eşleşmeyebilir.

Uzantınızı, yüklendiği yere bağlı olarak aşağıdaki seçeneklerden birini kullanarak güncelleyin:

  • Firebase konsolundan
  • Firebase KSA'dan şunu kullanarak:
    • firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>

Bu adımı atlarsanız ve uzantınız en yeni sürümde değilse CLI, yapılandırmayı dışa aktarırken yükseltme yapmanızı ister.

Uzantıyı yerel bir işlev kitine ayırma

Bir uzantıyı yerel işlev kitine dönüştürmeye başlamadan önce uzantı kaynak kodunun Firebase projenizde olduğundan emin olun. Bunu yapmak için uzantı deposunu GitHub'dan kopyalayın, Firebase proje kök dizininizde bir dizin oluşturun ve uzantının functions/ klasörünü ve extension.yaml dosyasını bu dizine kopyalayın:

mkdir -p path/to/kit
cp -r /path/to/extension-source/functions/* path/to/kit/
cp /path/to/extension-source/extension.yaml path/to/kit/.

Uzantı kaynak kodunuzu 2. nesil bir işleve taşımak için yayıncı geçiş rehberindeki 1 ila 8. adımları uygulayın. Ardından aşağıdaki adımlarla devam edin.

Yerel kitinizin, dışa aktarılan işlev bölgesini ve gelişmiş parametreleri desteklemesini sağlama

Yerel işlev kitinde Firebase CLI, paketi ayarlamak ve taşınan sistem parametrelerini kullanacak şekilde yapılandırmak için bir index.ts dosyası oluşturmaz. Uzantınız için yapılandırılan işlev bölgesini ve gelişmiş parametreleri kullanmak istiyorsanız index.ts dosyanızı, firebase ext:export --mode functions tarafından dışa aktarılan biçimi bir ortam değişkeni dosyasına okuyacak şekilde ayarlayın.

Özellikle, işlevlerinizi dışa aktaran üst düzey index.ts dosyasında FUNCTION_DEFAULT_REGION için bir parametre tanımlayın ve CLI tarafından kullanılan index-kit-migration.ts şablonuna benzer şekilde EXT_MIGRATED_SYSTEM_<GLOBAL_OPTION> biçimindeki ortam değişkenleriyle setGlobalOptions işlevini çağırın:

import { setGlobalOptions } from "firebase-functions";
import { MemoryOption, VpcEgressSetting, IngressSetting } from "firebase-functions/v2/options";
import { defineString } from "firebase-functions/params";

export const regionParam = defineString("FUNCTION_DEFAULT_REGION", {
  input: { text: { nonEmpty: true } },
  description: "Global default region where functions should be deployed. Can be overridden per-function.",
});

setGlobalOptions({
  region: regionParam,
  memory: (process.env.EXT_MIGRATED_SYSTEM_MEMORY as MemoryOption) ?? undefined,
  timeoutSeconds: process.env.EXT_MIGRATED_SYSTEM_TIMEOUTSECONDS
    ? Number(process.env.EXT_MIGRATED_SYSTEM_TIMEOUTSECONDS)
    : undefined,
  vpcConnectorEgressSettings:
    process.env.EXT_MIGRATED_SYSTEM_VPCCONNECTOREGRESSSETTINGS &&
    process.env.EXT_MIGRATED_SYSTEM_VPCCONNECTOREGRESSSETTINGS !== "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED"
      ? (process.env.EXT_MIGRATED_SYSTEM_VPCCONNECTOREGRESSSETTINGS as VpcEgressSetting)
      : undefined,
  vpcConnector: process.env.EXT_MIGRATED_SYSTEM_VPCCONNECTOR ?? undefined,
  maxInstances: process.env.EXT_MIGRATED_SYSTEM_MAXINSTANCES
    ? Number(process.env.EXT_MIGRATED_SYSTEM_MAXINSTANCES)
    : undefined,
  minInstances: process.env.EXT_MIGRATED_SYSTEM_MININSTANCES
    ? Number(process.env.EXT_MIGRATED_SYSTEM_MININSTANCES)
    : undefined,
  ingressSettings: (process.env.EXT_MIGRATED_SYSTEM_INGRESSSETTINGS as IngressSetting) ?? undefined,
  // Parses a comma-separated string of key:value pairs into a key-value object
  // (for example, "key1:value1,key2:value2" -> { key1: "value1", key2: "value2" }).
  labels: process.env.EXT_MIGRATED_SYSTEM_LABELS
    ? process.env.EXT_MIGRATED_SYSTEM_LABELS.split(",").reduce<Record<string, string> | undefined>(
        (acc, curr) => {
          const [key, value] = curr.split(":");
          const trimmedKey = key?.trim();
          const trimmedValue = value?.trim();
          if (!trimmedKey || !trimmedValue) {
            return acc;
          }
          acc = acc ?? {};
          acc[trimmedKey] = trimmedValue;
          return acc;
        },
        undefined,
      )
    : undefined,
});

// Re-export all functions so the Firebase CLI can deploy them
export * from "./your-functions";

Taşıma işleminden önce kitinizi test etme

Artık dağıtıldığında uzantınızın yeni bir yüklemesiyle aynı şekilde davranan yerel bir işlev kitiniz var. Sonraki adım, üretim uzantısı örneklerinizi taşımadan önce süreçte yanlışlıkla ortaya çıkan sorunları doğrulamak ve düzeltmektir.

Öncelikle, çatalladığınız kiti yerel kit olarak ekleyin, yapılandırın ve bir test projesine dağıtın. Yerel işlev kitleri Firebase projenizin içinde olmalıdır. Bu nedenle, kopyalanan uzantı deposu Firebase projenizin dışındaysa proje dizinine taşıyın. Ardından, yerel kit olarak yüklemek için aşağıdaki kit yükleme komutunu çalıştırın:

firebase functions:kits:install --directory <path-to-your-fork> --project <test-project-id>

Bu komut, ilk test örneğiniz için bir kit kimliği, örnek kimliği ve yapılandırma seçmenize yardımcı olur. Ardından, çatallanmış dizininizi işaret eden yerel bir kiti kaydetmek için firebase.json dosyanızı değiştirir. Her örneğin yapılandırmaları function-kits/<kit-id>/config-<instance-id> konumundaki bir .env dosyasında depolanır.

Yerel kitinizi, davranışını test etmek için uygun kaynaklara sahip bir test projesine dağıtın. Uzantınızı test etmek için oluşturduğunuz bir test projeniz varsa aşağıdaki komutu çalıştırın:

firebase deploy --only functions:<kit-instance-id> --project <test-project-id>

Çözümlü örnek: Cloud Firestore'ten BigQuery'e akış (firestore-bigquery-export)

Cloud Firestore ile BigQuery arasındaki senkronizasyonu uçtan uca doğrulama:

  1. Firebase konsolunun Cloud Firestore sayfasında, COLLECTION_PATH (users) olarak ayarladığınız koleksiyonu oluşturun (henüz oluşturulmamışsa).
  2. Herhangi bir değer içeren alanlara sahip bigquery-mirror-test adlı bir doküman oluşturun.
  3. Google Cloud konsolunun BigQuery sayfasında ham değişiklik günlüğü tablosunu sorgulayın. Doküman oluşturma işlemini kaydeden tek bir satır içermelidir:

    SELECT * FROM `PROJECT_ID.analytics.users_raw_changelog`
    
  4. Mevcut tek doküman (bigquery-mirror-test) için en son değişiklik etkinliğini döndürmesi gereken en son görünümü sorgulayın:

    SELECT * FROM `PROJECT_ID.analytics.users_raw_latest`
    
  5. Cloud Firestore içindeki bigquery-mirror-test dokümanını silin. En son görünümden kaybolur ve ham değişiklik günlüğü tablosuna bir DELETE etkinliği eklenir.

    Tek bir dokümanın tüm geçmişini şunlarla inceleyebilirsiniz:

    SELECT *
       FROM `PROJECT_ID.analytics.users_raw_changelog`
       WHERE document_name = "bigquery-mirror-test"
       ORDER BY timestamp ASC
    

Uzantıyı test etme işleminden farkları:

  • Tetikleyici ext-<instanceId>-fsexportbigquery olarak değil, kit-<kit-instance-id>-fsexportbigquery olarak dağıtılır. Cloud Functions kontrol panelinde ve günlüklerinde bu adı arayın.
  • Kodunuz, Firebase Local Emulator Suite içinde standart işlevler olarak çalışır. .env.local ile emülatörde kullanılacak parametre değerlerini ayarlayabilirsiniz. Ayrıca Cloud Functions birim testi bölümünde açıklandığı gibi firebase-functions-test SDK'sını kullanarak kodunuzu birim testine tabi tutabilirsiniz.
  • Temel hazırlık artık Uzantılar çalışma zamanı tarafından yönetilmez. Değişiklik günlüğü tablosu dağıtımdan sonra eksikse kurulum görevini manuel olarak yeniden çalıştırın: firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>. Görev, idempotent olduğundan yeniden çalıştırıldığında veri kümesi, tablo ve görünümler mutabık hale getirilir.
  • Parametre değerleri, yükleme formu yerine .env üzerinden alınır. Bu nedenle, .env tamamlandıktan sonra firebase deploy yeniden çalıştırıldığında etkileşimli olmaz.

(İsteğe bağlı) Testten sonra temizleme

Testten sonra bu test örneğini kaldırmak istiyorsanız uygulamayı kaldırın:

firebase functions:kits:uninstall --instance <kit-instance-id> --project <test-project-id>

Bu işlem, kit dağıtılarak oluşturulan tüm bulut kaynaklarını siler ve örnek yapılandırmasını kaldırır. Kitten yalnızca bir tane varsa bu işlem, kit girişini firebase.json üzerinden de kaldırır. Yerel kaynak kodu dizininizi silmez. Kiti üretim taşıma işleminiz için yüklediğinizde tekrar bir kit kimliği seçebilirsiniz.

Uzantılardan yerel kitinize geçiş yapma

Yerel kitinizi test ettiğinize göre artık canlı olarak dağıtılan uzantı örneğinizi taşıyabilirsiniz.

1. Değiştirme işlevi kiti örneğini yükleme

Yerel işlev kitinizi yükleyin. Bir sonraki adımda mevcut uzantı yapılandırmanızın doğrudan bu kit örneğine aktarılabilmesi için manuel yapılandırmayı atlamak üzere --no-configure değerini iletin:

firebase functions:kits:install --no-configure --directory <path-to-your-fork> --project <project-id>

2. İşlev kiti örneğini uzantıyla aynı şekilde yapılandırın.

Bu kit örneğini, değiştirdiği uzantıyla aynı yapılandırmayla özelleştirmeniz gerekir. Uzantı örneği yapılandırmanızı bir .env dosyasına aktarabilirsiniz. Bu dosya, kitler de dahil olmak üzere tüm Cloud Functions için parametre, ortam değişkeni ve gizli referans yapılandırma verilerini depolar. Doğrudan kitinizin yapılandırma dosyasına aktarmak için şu komutu çalıştırın:

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

Bu adımın sonunda, bu örneğin yapılandırma bilgileri, örnek yapılandırma dizininizdeki projeye özel bir .env dosyasında depolanır. Örneğin: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>

3. Değişim kitini dağıtma ve doğrulama

Kiti yükleyip işlev grubu olarak kullanılabilir hale getirdikten sonra kit değişimini dağıtabilirsiniz. İşlev kitleri, standart işlevler gibi çalışır. Her kit örneği, işlevlerinizi düzenlemek için ayrı bir kod tabanı görevi görür. Tüm işlevlerinizi veya yalnızca belirli bir kit örneğini dağıtmayı seçebilirsiniz. Tek bir uzantı örneğini taşırken yalnızca o kit örneğini dağıtın.

Kitiniz, taşıma işlemini gerçekleştirdiğiniz uzantı örneğinde bulunmayan yeni parametreler kullanıyorsa Firebase CLI, dağıtım sürecinin başında bu parametreleri girmenizi ister. Güncel bir firestore-bigquery-export uzantısından alınan bu örnekte bu durum beklenmez ancak birçok kit, kit tarafından kullanılan tüm etkinlik tetikleyici kaynakları için yeni bir parametre ister. Bu taşıma işlemi kapsamında, güncellenen kitler daha önce 1. nesil işlevleri kullanan uzantılarda 2. nesil işlevleri kullanır. 2. nesilde işlevler, etkinlik kaynaklarının yakınında bulunur ve ek parametre olarak eklenir. Gelecekteki güncellemelerde yeni parametreler eklenirse CLI, bir sonraki dağıtımda sizi uyarır.

Örnek:

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

Çıkış:

=== 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!

Kitin firebase deploy işleminde hata olmadığını doğrulamak için dağıtım günlüklerini kontrol ederek yaşam döngüsü kancalarının tetiklenip tetiklenmediğine bakın. Stream Cloud Firestore to BigQuery gibi popüler uzantılar, yaşam döngüsü kancalarını kullanır. Aşağıda, tetiklenen bir yaşam döngüsü kancasının nasıl göründüğüne dair bir örnek verilmiştir:

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

Bu günlük mesajları aşağıdakileri doğrular:

  • Bir yaşam döngüsü kancası bulundu ve yürütüldü.
  • Yaşam döngüsü kancasının ilişkili görev sırasında bir görev sıraya alındı.
  • Görevin hatasız tamamlandığını doğrulayabilmeniz için Cloud Logging bağlantısı sağlandı.

Günlüklerde hata olmadığını ve görev sırası etkinliğinizin başarıyla işlendiğini doğrulamak için günlük bağlantısını takip ederek Google Cloud konsoluna gidin. Yaşam döngüsü olayı başarıyla yürütülmediyse şu komutu çalıştırarak yeniden tetikleyebilirsiniz:

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

Bir işlev kiti örneğini ilk kez dağıtıyorsanız şunu çalıştırın:

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

Doğrulama sırasında herhangi bir zamanda bu taşıma işlemini durdurmak veya geri almak isterseniz Uzantıyı kaldırma bölümündeki talimatları uygulayarak kiti kaldırabilirsiniz.

İşlev kitinizin ilk dağıtımının başarıyla tamamlandığını doğruladıktan sonra kitin işlevinin gerçekten beklendiği gibi çalıştığını doğrulamanız gerekir. Uzantı çalışmaya devam ettiği için, kontrol ettiğiniz şeyin yalnızca ikisinden birinin çalışıp çalışmadığı olmadığından emin olmanız gerekir. Çünkü uzantı çalışmaya devam edecektir.

İşleme değiştirilmezse ve uzantı ile kitin yinelenen sonuçlarını görmezseniz en iyi seçenek, kitin işlevini tetikledikten sonra kitin günlüklerini doğrudan incelemektir.

Uygulamalı Örnek: Cloud Firestore'ten BigQuery'e akış

Stream Cloud Firestore to BigQuery uzantısı, hem ham değişiklik günlüğü tablosuna (*_raw_changelog) hem de en son görünüm tablosuna (*_raw_latest) yazar. Aynı etkinlik hem kite hem de uzantıya gönderilirse yinelenenler kaldırılır. Bu nedenle, kitin çalıştığını doğrulamak için BigQuery'de satırların veya yinelenen satırların varlığını kullanamazsınız.

firebase functions:logs kullanarak Firestore koleksiyonunuza yazma işlemi yaptıktan kısa bir süre sonra işlev günlüklerini görüntüleyebilir ve yazma işleminin başarıyla tamamlandığını gösteren bir günlük girişi olup olmadığını kontrol edebilirsiniz. Varsayılan örnek kimliği firestore-bigquery-export olan bu kit için şu şekilde görünür:

2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2

Çok sayıda günlüğünüz varsa aşağıdaki komutu kullanarak belirli bir kit işlevine göre filtreleme yapabilirsiniz:

firebase functions:log --only <function name>

Bir kit örneğinin belirli işlev adlarını bulmak için aşağıdaki komutu kullanabilirsiniz:

firebase functions:list | grep kit-<kit instance id>

Bu örnekte:

firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery  │ v2      │ google.cloud.firestore.document.v1.written                    │
│ kit-firestore-bigquery-export-initBigQuerySync  │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2      │ taskQueue                                                     │
│ kit-firestore-bigquery-export-syncBigQuery      │ v2      │ taskQueue                                                     │

4. Uzantıyı kaldırma

Dağıtılan işlev kitinizi doğruladıktan sonra, uzantınızı kaldırabilirsiniz. Böylece, uzantının davranışını bir kez kit için, bir kez de uzantı için kopyalamamış olursunuz. --immediate işaretini iletirseniz nasıl yüklediğinizden bağımsız olarak tüm uzantıları Firebase CLI'dan kaldırabilirsiniz:

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

Örnek:

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

Çıkış:

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

Gelişmiş taşıma işlemleri

Tek bir kod tabanıyla yönetmek istediğiniz birden fazla Firebase projesinde uzantılarınız olabilir. Örneğin, aynı altyapıyı bir testing ortamına ve bir production ortamına dağıtırsanız ve her birinde BigQuery hizmetine aktardığınız bir documents Cloud Firestore örneği varsa firestore-bigquery-export uzantısının iki örneği yüklü olabilir:

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

Firebase CLI ile çalışırken bu iki uzantı örneğini tek bir kod tabanındaki iki işlev kiti örneğine taşıdıysanız ve firebase deploy --project testing ile firebase deploy --project production kullanarak dağıttıysanız her dağıtım hem testing hem de production ortamlarında iki örnek oluşturur.

Bunun yerine, iki uzantı örneğini birden fazla projeye dağıtılan tek bir firestore-bigquery-export işlev kiti örneğiyle değiştirin. Her projenin kendi yapılandırması vardır. Örneğin yapılandırma dizini aşağıdaki gibi görünmelidir:

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

testing ve production için yapılan her dağıtım, ilgili yapılandırmayla birlikte kitinizin bir örneğini oluşturur. Mevcut CLI komutları, her ext:migrate veya functions:kits:install çağrısında --project işaretini ilettiğiniz sürece bu kurulumu oluşturur.

Örnek:

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

Artık testing ve production projelerinize ilgili yapılandırmalarıyla dağıtılacak şekilde yapılandırılmış tek bir kit örneğiniz var. testing projesinde bir örnek oluşturur ve production projesindeki aynı paket için functions:kits:install komutunu çalıştırırsanız testing için yapılandırılan örneği yeniden kullanma veya ikinci bir örnek yükleme seçeneği sunulur.