Firebase Extensions'dan bir işlev kitine geçiş yaptıktan sonra kit örneklerinizi Firebase projenizde standart 2. nesil Cloud Functions olarak yönetirsiniz. Bu kılavuzda, mevcut bir uzantıyı taşımadan yeni işlev kitlerini doğrudan npm'den nasıl yükleyeceğiniz, kit parametrelerini ve genel seçenekleri nasıl güncelleyeceğiniz, yayıncılar güncellemeleri yayınladıkça npm paketi sürümlerini nasıl yükselteceğiniz ve gerekirse taşıma işlemini nasıl geri alacağınız açıklanmaktadır.
npm paketindeki bir işlev kitini taşıma işlemi yapmadan kullanma
Bir uzantıdan geçiş yapmıyorsanız işlev kiti kullanmak iki bölümden oluşur:
Kiti yükleme
Aşağıdaki CLI komutunu kullanarak bir işlev kiti yükleyebilirsiniz:
firebase functions:kits:install --package <npm-package-name>
Örnek:
firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project my-project
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? firestore-bigquery-export
i function-kits/firestore-bigquery-export/source/package.json is unchanged
i function-kits/firestore-bigquery-export/source/tsconfig.json is unchanged
i function-kits/firestore-bigquery-export/source/.gitignore is unchanged
i functions: Running npm install @firebase-function-kits/firestore-bigquery-export@next --save-prefix=^...
i functions: Building TypeScript source...
✔ Wrote configuration info to firebase.json
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:
✔ Enter a string value for FUNCTION_DEFAULT_REGION:
(Global default region where functions should be deployed. Can be overridden per-function.) us-east1
✔ Enter a string value for BigQuery Project ID:
(Override the default project for BigQuery instance. This can allow updates to be directed to a BigQuery
instance on another GCP project.) my-bigquery-project
✔ Enter a string value for Firestore Instance ID:
(The Firestore database to use. Use "(default)" for the default database. You can view your available
Firestore databases at https://console.cloud.google.com/firestore/databases.) eu-testing
# Omitting many more parameters for brevity
✔ Wrote configuration info to firebase.json
✔ functions: Function kit firestore-bigquery-export successfully installed.
i functions: At the first deploy, the following functions will be created in your project:
- kit-firestore-bigquery-export-fsexportbigquery
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i functions: At the first deploy, the following Task Queues will be created in your project:
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i functions: At the first deploy, the following APIs will be enabled in your project:
- bigquery.googleapis.com
- cloudtasks.googleapis.com
i functions: At the first deploy, the following roles will be granted to the kit service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
⚠ functions: Please review the changes above. If you do not want them applied to your project, uninstall this kit before running firebase deploy.
Varsayılan genel seçenekleri değiştirme
Kit örneğiniz için genel seçenekleri yapılandırmak istiyorsanız function-kits/<your-kit-id>/source/src/index.ts konumundaki index.ts dosyasını değiştirin.
Varsayılanların kitin tüm örneklerinde paylaşılmasını istiyorsanız bunları doğrudan index.ts içinde ayarlayın. Aksi takdirde, index.ts adresinde belgelenen örnekleri ve talimatları uygulayarak örnek başına ayarlanmış parametreler oluşturun.
Kiti dağıtma
İşlev kitinizi dağıtmak için şu komutu çalıştırın:
firebase deploy --only functions:<kit-instance-id>
Ö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!
Kiti yükleyip dağıttığınızda aşağıdaki işlemler gerçekleştirilir:
function-kits/firestore-bigquery-export/sourceoluşturur. Bu, kit paketini içe ve dışa aktaran temel birindex.tsdosyası da dahil olmak üzere kit kaynağını içerir. Ayrıca kitin her örneği için farklı bir konum seçmenize olanak tanıyan bir parametre ayarlar.function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.<project-id>oluşturur ve işlev için girilen yapılandırma verileriyle doldurur. Gelecekteki güncellemeler yeni parametreler eklerse bir sonraki dağıtımda size sorulur.- Bu kiti çalıştırmak için gereken Google Cloud kaynaklarını oluşturur. Bu kaynaklar arasında belirli IAM rollerine sahip bir hizmet hesabı, işlevler, Eventarc tetikleyicileri ve Cloud Tasks görev sıraları bulunur.
Aynı projede kitin birden fazla örneği varsa aynı kitin yeni örneklerini oluşturup dağıtmak için bu komutları tekrarlayabilirsiniz. Ayrıca tek bir kit örneğini farklı yapılandırmalara sahip birden fazla Firebase projesine (ör. hazırlık projesi ve üretim projesi) dağıtabilirsiniz. Gelişmiş kurulumlar hakkında daha fazla bilgi edinmek için Gelişmiş taşıma işlemleri başlıklı makaleyi inceleyin.
Kiti kaldırma
Kiti ve tüm örneklerini kaldırmak için şu komutu çalıştırın:
firebase functions:kits:uninstall --kit <kit-id>
Bu işlem, tüm örnekleri ve yapılandırmalarını siler ve kit kaynağını diskten kaldırır.
Kit'in yalnızca tek bir örneğini kaldırmak için şu komutu çalıştırın:
firebase functions:kits:uninstall --instance <kit-instance-id>
Kitten yalnızca bir tane varsa bu işlem kitin tamamını kaldırır.
Kit yapılandırmasını güncelleme
Yükleme veya ilk dağıtım sırasında, kitiniz için tüm parametreleri yapılandırmanız istenir (bir uzantıdan yapılandırma taşımadıysanız).
Bu parametreler, kit örneği yapılandırma dizininizdeki .env dosyasında depolanır. Örneğin, my-project projesinde firestore-bigquery-export adlı bir kit örneğiniz varsa .env dosyası function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project konumunda bulunur.
Aşağıdaki gibi görünür:
DATASET_LOCATION=us
BIGQUERY_PROJECT_ID=my-project
DATABASE=eu-testing
DATABASE_REGION=eur3
COLLECTION_PATH=posts
WILDCARD_IDS=false
DATASET_ID=firestore_export
TABLE_ID=posts
TABLE_PARTITIONING=NONE
TIME_PARTITIONING_FIELD=
TIME_PARTITIONING_FIRESTORE_FIELD=
TIME_PARTITIONING_FIELD_TYPE=omit
CLUSTERING=
MAX_DISPATCHES_PER_SECOND=100
VIEW_TYPE=view
MAX_STALENESS=
REFRESH_INTERVAL_MINUTES=
BACKUP_COLLECTION=
TRANSFORM_FUNCTION=
USE_NEW_SNAPSHOT_QUERY_SYNTAX=no
EXCLUDE_OLD_DATA=no
KMS_KEY_NAME=
MAX_ENQUEUE_ATTEMPTS=3
LOG_LEVEL=info
FUNCTION_DEFAULT_REGION=us-west1
Değiştirmek istediğiniz yapılandırma değerini biliyorsanız doğrudan .env dosyasında düzenleyebilirsiniz. Yükleme ve dağıtım sırasında çalışan etkileşimli istemi kullanmayı tercih ederseniz değiştirmek istediğiniz parametreleri .env dosyasından kaldırın ve kit örneğini yeniden dağıtın. Dağıtım sırasında bu parametreleri
girmeniz istenir.
Örneğin, COLLECTION_PATH=posts satırını silip dağıtırsanız dağıtım sırasında bu satır istenir:
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export-d9cd/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:
Collection path: What is the path of the collection that you would like to export? You may use {wildcard} notation to match a subcollection of all documents in a collection (for example: chatrooms/{chatid}/posts). Parent Firestore Document IDs from {wildcards} can be returned in path_params as a JSON formatted string.
? Enter a string value for Collection path: (posts)
İşlev kitini sürdürme ve yükseltme
Yayıncılar; hataları düzeltmek, özellik eklemek, bağımlılıkları güncellemek veya güvenlik açıklarını gidermek için npm paketlerini zaman içinde güncelleyebilir. Bu sürümleri takip etmenizi ve güncellemeleri (özellikle güvenlik açıklarını giderenleri) yüklemenizi öneririz.
functions:kits:install komutu, bir kiti npm paketi olarak yükleyen ve kitinizin her örneği için tüm işlevlerini dışa aktaran bir kod tabanı oluşturur.
Bir kiti yükseltmek için paket sürümünü güncelleyin ve ardından değişiklikleri uygulamak için kitinizin her bir örneğini yeniden dağıtın.
Bir kitin güncellemeleri olup olmadığını belirleme
function-kits/<your-kit-id>/source adresinde kitinizin source dizinine gidin. Bu source dizininden aşağıdaki komutu çalıştırarak işlev kitiniz ve Cloud Functions SDK dahil olmak üzere tüm güncel olmayan npm paketleriyle ilgili bir rapor alın:
npm outdated
GitHub için Dependabot gibi, güncellenmesi gereken bağımlılıkları belirlemek üzere bir araç kullanıyorsanız kit dizininizi bu iş akışına entegre etmenizi öneririz.
Kiti güncelleme
Kiti ve bağımlılıklarını, zarar vermeyen en son sürüme güncellemek için (zarar veren değişiklikler içerebilecek ana sürüm güncellemeleri hariç) şu komutu çalıştırın:
npm update --save
Yalnızca işlev kiti paketini güncellemek istiyorsanız paket adını npm update komutuna iletin:
npm update <package-name> --save
Bir paketi en son ana sürüme yükseltmek için (bu işlem, zarar veren değişikliklere neden olabilir) aşağıdaki komutu çalıştırın:
npm update --save <npm-package-name>@latest
Paket belgelerini ve sürüm notlarını inceleyerek nelerin değiştiğini ve zarar veren değişiklikleri önlemek için dağıtımdan önce veya sonra ek adımlar atmanız gerekip gerekmediğini öğrenin.
Güncellenen örnekler dağıtılıyor
npm update komutunu çalıştırmak yalnızca yerel kaynak kodunuzu günceller. Bulutta çalışan işlevlerinizi güncellemek için bunları yeniden dağıtın. Aşağıdaki komutu çalıştırarak tüm işlev kitleri dahil olmak üzere projenizdeki tüm işlevleri yeniden dağıtabilirsiniz:
firebase deploy --only functions
Taşıma işlemini geri alma
Taşıma işlemini geri almak için önce uzantıyı yeniden yükleyin. Yükleme sırasında gereken yapılandırma değerlerini bulmak için kitin .env dosyasını kullanabilirsiniz.
Uzantı dağıtıldıktan sonra kit örneğini kaldırın (bu, kalan son örnekse tüm kiti kaldırır):
firebase functions:kits:uninstall --instance <kit-instance-id> --project <project-id>
Uzantı yapılandırmalarını gelecekteki bir taşıma işlemi için kaydetme
31 Mart 2027'den sonra mevcut bir uzantı yapılandırmasını getiremeyeceksiniz. 31 Mart 2027'den önce geçiş yapamıyorsanız bu tarihten sonra geçiş yapmaya karar vermeniz durumunda uzantınızı kaydetmenizi önemle tavsiye ederiz.
Uzantı örneği kimliklerinizin listesini alın:
Firebase projenizdeki tüm uzantı örneklerinin listesini almak için
ext:listCLI komutunu kullanabilirsiniz:firebase ext:list --project <project-id>Örnek:
firebase ext:list --project my-project» firebase ext:list i extensions: ensuring 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.3 │ 2026-09-06 22:31:04 │ @firebase-function-kits/firestore-bigquery-export │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/firestore-bigquery-export │ firebase │ firestore-bigquery-export │ ACTIVE │ 0.3.2 │ 2026-06-03 17:41:24 │ @firebase-function-kits/firestore-bigquery-export │ └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘ ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshootingext:listkomutunun JSON çıkış biçimi de vardır. jq yardımcı programı yüklüyse bir projenin tüm örnek kimliklerinin listesini almak için bu komutu kullanabilirsiniz:firebase ext:list --json --project <project-id> | jq -r '.result[].instanceId'Örnek:
firebase ext:list --json --project my-project | jq -r '.result[].instanceId'Çıkış:
firestore-bigquery-export-zbrp firestore-bigquery-exportHer örneğin yapılandırmasını dışa aktarın:
Her bir örnek için aşağıdaki dışa aktarma komutunu çalıştırarak yapılandırmasını diske kaydedebilirsiniz:
firebase ext:export --mode functions --project <project-id> --instance <your-instance-id>Örnek:
firebase ext:export --mode functions --project my-project --instance firestore-bigquery-exportÇıkış:
i extensions: ensuring required API firebaseextensions.googleapis.com is enabled... i functions: Saving exported extensions config as a Function Kits .env file i functions: Created new local file firestore-bigquery-export/.env.testing to store param values. We suggest explicitly adding or excluding this file from version control. i functions: Loaded environment variables from firestore-bigquery-export/.env.testing i functions: Loaded environment variables from firestore-bigquery-export/.env.testing i functions: Writing new parameter values to disk: firestore-bigquery-export/.env.testingDiskte, bu uzantı örneğinin dışa aktarılmış halini
<instance-id>/.env.<project-id>gibi bir konumda bulabilirsiniz. Bu örnekte,firestore-bigquery-export/.env.my-projectkonumunda yer almaktadır.Bu işlemi her örnek için bir kez tekrarlayabilirsiniz. Bu işlem, tüm uzantı örneği yapılandırmalarınızı içeren bir
.envdosyası grubu oluşturur. Bu dosyalar daha sonra taşıma işleminin bir parçası olarak yeniden kullanılabilir.Dışa aktarılan
.envdosyalarını daha iyi bir konuma taşıyın:Uzantılarınızdan dışa aktarılan
.envdosyaları doğrudan Firebase projenize yerleştirildi ancak işlev kitlerine geçiş yapmadıysanız bu dosyalara günlük olarak ihtiyaç duyulmaz. Bu dosyaları projenizden başka bir uygun depolama konumuna taşıyabilir veya silebilirsiniz.