Firebase Extensions से फ़ंक्शन किट पर माइग्रेट करने के बाद,Firebase प्रोजेक्ट में किट इंस्टेंस को स्टैंडर्ड 2nd gen Cloud Functions के तौर पर मैनेज किया जाता है. इस गाइड में, मौजूदा एक्सटेंशन को माइग्रेट किए बिना, सीधे npm से नई फ़ंक्शन किट इंस्टॉल करने का तरीका बताया गया है. साथ ही, इसमें किट के पैरामीटर और ग्लोबल विकल्पों को अपडेट करने, पब्लिशर के अपडेट रिलीज़ करने पर npm पैकेज के वर्शन अपग्रेड करने, और ज़रूरत पड़ने पर माइग्रेशन को रोल बैक करने का तरीका भी बताया गया है.
माइग्रेट किए बिना, npm पैकेज से फ़ंक्शन किट का इस्तेमाल करना
अगर एक्सटेंशन से माइग्रेट नहीं किया जा रहा है, तो फ़ंक्शन किट का इस्तेमाल दो हिस्सों में किया जाता है:
किट इंस्टॉल की जा रही है
नीचे दी गई सीएलआई कमांड का इस्तेमाल करके, फ़ंक्शन किट इंस्टॉल की जा सकती है:
firebase functions:kits:install --package <npm-package-name>
काम करने का उदाहरण:
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.
डिफ़ॉल्ट ग्लोबल विकल्पों को बदलना
अपने किट इंस्टेंस के लिए, global
options कॉन्फ़िगर करने के लिए, index.ts फ़ाइल में बदलाव करें. यह फ़ाइल function-kits/<your-kit-id>/source/src/index.ts पर मौजूद है.
अगर आपको किट के सभी इंस्टेंस में डिफ़ॉल्ट वैल्यू शेयर करनी हैं, तो उन्हें सीधे index.ts में सेट करें. अगर ऐसा नहीं है, तो हर इंस्टेंस के लिए सेट किए गए पैरामीटर बनाएं. इसके लिए, index.ts में दिए गए उदाहरणों और निर्देशों का पालन करें.
किट को डिप्लॉय करना
अपने फ़ंक्शन किट को डिप्लॉय करने के लिए, यह कमांड चलाएं:
firebase deploy --only functions:<kit-instance-id>
काम करने का उदाहरण:
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!
किट को इंस्टॉल और डिप्लॉय करने पर ये कार्रवाइयां होती हैं:
- यह
function-kits/firestore-bigquery-export/sourceबनाता है. इसमें किट का सोर्स शामिल होता है. इसमें एक बुनियादीindex.tsफ़ाइल भी शामिल होती है, जो किट पैकेज को इंपोर्ट और एक्सपोर्ट करती है. साथ ही, यह एक ऐसा पैरामीटर सेट अप करती है जिसकी मदद से, किट के हर इंस्टेंस के लिए अलग-अलग जगह चुनी जा सकती है. - यह फ़ंक्शन,
function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.<project-id>बनाता है और इसमें फ़ंक्शन के लिए डाला गया कॉन्फ़िगरेशन डेटा भरता है. अगर आने वाले समय में होने वाले अपडेट में नए पैरामीटर जोड़े जाते हैं, तो आपको अगले डिप्लॉयमेंट के दौरान इसकी सूचना दी जाएगी. - यह किट चलाने के लिए, ज़रूरी Google Cloud संसाधन बनाता है. इनमें खास आईएएम भूमिकाओं वाला सेवा खाता, फ़ंक्शन, Eventarc ट्रिगर, और Cloud Tasks कतारें शामिल हैं.
अगर आपके पास एक ही प्रोजेक्ट में किट के कई इंस्टेंस हैं, तो एक ही किट के नए इंस्टेंस बनाने और उन्हें डिप्लॉय करने के लिए, इन कमांड को दोहराया जा सकता है. इसके अलावा, एक ही किट इंस्टेंस को अलग-अलग कॉन्फ़िगरेशन वाले कई Firebase प्रोजेक्ट में भी डिप्लॉय किया जा सकता है. उदाहरण के लिए, स्टेजिंग प्रोजेक्ट और प्रोडक्शन प्रोजेक्ट. ऐडवांस सेटअप के बारे में ज़्यादा जानने के लिए, ऐडवांस माइग्रेशन लेख पढ़ें.
किसी किट को अनइंस्टॉल करना
किट और उसके सभी इंस्टेंस हटाने के लिए, यह कमांड चलाएं:
firebase functions:kits:uninstall --kit <kit-id>
इससे सभी इंस्टेंस और उनके कॉन्फ़िगरेशन मिट जाते हैं. साथ ही, किट सोर्स को डिस्क से हटा दिया जाता है.
किट के सिर्फ़ एक इंस्टेंस को हटाने के लिए, यह कमांड चलाएं:
firebase functions:kits:uninstall --instance <kit-instance-id>
अगर आपके पास किट का सिर्फ़ एक इंस्टेंस है, तो इससे पूरी किट अनइंस्टॉल हो जाएगी.
किट कॉन्फ़िगरेशन अपडेट करना
इंस्टॉल करने या पहली बार डिप्लॉय करने के दौरान, आपको अपने किट के सभी पैरामीटर कॉन्फ़िगर करने के लिए कहा जाता है. हालांकि, ऐसा तब नहीं होता, जब आपने किसी एक्सटेंशन से कॉन्फ़िगरेशन माइग्रेट किया हो.
ये पैरामीटर, आपके किट इंस्टेंस की कॉन्फ़िगरेशन डायरेक्ट्री में मौजूद .env फ़ाइल में सेव होते हैं. उदाहरण के लिए, अगर आपके पास प्रोजेक्ट my-project में firestore-bigquery-export नाम का किट इंस्टेंस है, तो .env फ़ाइल function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project पर मौजूद होगी.
यह इस तरह दिखता है:
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
अगर आपको उस कॉन्फ़िगरेशन वैल्यू के बारे में पता है जिसमें बदलाव करना है, तो उसे सीधे .env फ़ाइल में जाकर बदला जा सकता है. अगर आपको इंस्टॉलेशन और डिप्लॉयमेंट के दौरान चलने वाले इंटरैक्टिव प्रॉम्प्ट का इस्तेमाल करना है, तो .env फ़ाइल से उन पैरामीटर को हटाएं जिनमें आपको बदलाव करना है. इसके बाद, किट इंस्टेंस को फिर से डिप्लॉय करें. डप्लॉयमेंट के दौरान, आपसे उन पैरामीटर को डालने के लिए कहा जाता है.
उदाहरण के लिए, अगर आपने COLLECTION_PATH=posts लाइन को मिटा दिया है और उसे डिप्लॉय किया है, तो डिप्लॉयमेंट के दौरान आपको यह मैसेज दिखेगा:
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export-d9cd/.env.ajp-testing
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)
फ़ंक्शन किट का रखरखाव और उसे अपग्रेड करना
पब्लिशर समय-समय पर अपने npm पैकेज अपडेट कर सकते हैं. ऐसा गड़बड़ियों को ठीक करने, सुविधाएं जोड़ने, डिपेंडेंसी अपडेट करने या सुरक्षा से जुड़ी समस्याओं को हल करने के लिए किया जा सकता है. हमारा सुझाव है कि आप इन रिलीज़ के बारे में अप-टू-डेट रहें और अपडेट इंस्टॉल करें. खास तौर पर, वे अपडेट इंस्टॉल करें जो सुरक्षा से जुड़ी कमियों को ठीक करते हैं.
functions:kits:install कमांड, एक कोड बेस बनाती है. यह कोड बेस, किट को npm पैकेज के तौर पर इंस्टॉल करता है. साथ ही, आपकी किट के हर इंस्टेंस के लिए, इसके सभी फ़ंक्शन एक्सपोर्ट करता है.
किसी किट को अपग्रेड करने के लिए, पैकेज का वर्शन अपडेट करें. इसके बाद, बदलाव लागू करने के लिए, अपनी किट के हर इंस्टेंस को फिर से डिप्लॉय करें.
यह पता लगाना कि किसी किट के लिए अपडेट उपलब्ध हैं या नहीं
अपने किट की source डायरेक्ट्री पर जाएं. यह डायरेक्ट्री function-kits/<your-kit-id>/source पर मौजूद है. सभी पुराने npm पैकेज की रिपोर्ट पाने के लिए, इस source डायरेक्ट्री से यह कमांड चलाएं. इसमें आपका फ़ंक्शन किट और Cloud Functions एसडीके भी शामिल है:
npm outdated
अगर अपडेट करने के लिए ज़रूरी डिपेंडेंसी की पहचान करने के लिए, पहले से ही किसी टूल का इस्तेमाल किया जा रहा है, तो हमारा सुझाव है कि आप अपनी किट डायरेक्ट्री को उस वर्कफ़्लो में इंटिग्रेट करें. जैसे, GitHub के लिए Dependabot.
किट अपडेट करना
किट और उसकी डिपेंडेंसी को ऐसे नए वर्शन में अपडेट करने के लिए जो मौजूदा वर्शन के साथ काम करता है (इसमें ऐसे मेजर वर्शन के अपडेट शामिल नहीं हैं जिनमें बदलावों की वजह से मौजूदा वर्शन के साथ काम करने में समस्या आ सकती है), यह कमांड चलाएं:
npm update --save
अगर आपको सिर्फ़ फ़ंक्शन किट पैकेज अपडेट करना है और कोई दूसरा पैकेज नहीं, तो npm update में पैकेज का नाम पास करें:
npm update <package-name> --save
किसी पैकेज को नए मेजर वर्शन में अपग्रेड करने के लिए, यह कमांड चलाएं. इससे कुछ बदलाव हो सकते हैं:
npm update --save <npm-package-name>@latest
पैकेज के दस्तावेज़ और रिलीज़ नोट देखें. इससे आपको पता चलेगा कि क्या बदला है. साथ ही, यह भी पता चलेगा कि डिप्लॉयमेंट से पहले या बाद में, आपको कोई अतिरिक्त कार्रवाई करनी है या नहीं, ताकि बदलावों को लागू करने में कोई समस्या न आए.
अपडेट किए गए इंस्टेंस डिप्लॉय किए जा रहे हैं
npm update चलाने से, सिर्फ़ आपके लोकल सोर्स कोड में बदलाव होता है. क्लाउड में चल रहे फ़ंक्शन को अपडेट करने के लिए, उन्हें फिर से डिप्लॉय करें. अपने प्रोजेक्ट में मौजूद सभी फ़ंक्शन को फिर से डिप्लॉय किया जा सकता है. इनमें सभी फ़ंक्शन किट भी शामिल हैं. इसके लिए, यह कमांड चलाएं:
firebase deploy --only functions
माइग्रेशन की प्रोसेस को पहले जैसा करना
माइग्रेशन को पहले जैसा करने के लिए, सबसे पहले एक्सटेंशन को फिर से इंस्टॉल करें. इंस्टॉल करने के दौरान ज़रूरी कॉन्फ़िगरेशन वैल्यू ढूंढने के लिए, किट की .env फ़ाइल का इस्तेमाल किया जा सकता है.
एक्सटेंशन डिप्लॉय होने के बाद, किट इंस्टेंस को अनइंस्टॉल करें. अगर यह आखिरी इंस्टेंस है, तो इससे पूरी किट अनइंस्टॉल हो जाएगी:
firebase functions:kits:uninstall --instance <kit-instance-id> --project <project-id>
आने वाले समय में माइग्रेशन के लिए, एक्सटेंशन कॉन्फ़िगरेशन सेव करना
31 मार्च, 2027 के बाद, मौजूदा एक्सटेंशन कॉन्फ़िगरेशन को फ़ेच नहीं किया जा सकेगा. अगर आपको 31 मार्च, 2027 से पहले माइग्रेट करने में समस्या आ रही है, तो हमारा सुझाव है कि आप अपने एक्सटेंशन को सेव कर लें. ऐसा इसलिए, ताकि इस तारीख के बाद माइग्रेट करने का फ़ैसला लेने पर, आपको कोई परेशानी न हो.
अपने एक्सटेंशन इंस्टेंस आईडी की सूची पाएं:
अपने Firebase प्रोजेक्ट में मौजूद सभी एक्सटेंशन इंस्टेंस की सूची पाने के लिए,
ext:listसीएलआई कमांड का इस्तेमाल करें:firebase ext:list --project <project-id>काम करने का उदाहरण:
firebase ext:list --project my-project» firebaselocal ext:list i extensions: ensuring required API firebaseextensions.googleapis.com is enabled... i extensions: list of extensions installed in ajp-testing: ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐ │ 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:listकमांड का आउटपुट भी JSON फ़ॉर्मैट में होता है. अगर आपने jq यूटिलिटी इंस्टॉल की है, तो इसका इस्तेमाल करके किसी प्रोजेक्ट के सभी इंस्टेंस आईडी की सूची पाई जा सकती है:firebase ext:list --json --project <project-id> | jq -r '.result[].instanceId'काम करने का उदाहरण:
firebase ext:list --json --project my-project | jq -r '.result[].instanceId'आउटपुट:
firestore-bigquery-export-zbrp firestore-bigquery-exportहर इंस्टेंस के लिए कॉन्फ़िगरेशन एक्सपोर्ट करें:
हर इंस्टेंस के लिए, डिस्क पर उसका कॉन्फ़िगरेशन सेव किया जा सकता है. इसके लिए, एक्सपोर्ट करने का यह कमांड चलाएं:
firebase ext:export --mode functions --project <project-id> --instance <your-instance-id>काम करने का उदाहरण:
firebase ext:export --mode functions --project my-project --instance firestore-bigquery-exportआउटपुट:
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.testingडिस्क पर, आपको इस एक्सटेंशन इंस्टेंस का एक्सपोर्ट,
<instance-id>/.env.<project-id>जैसी जगह पर मिलेगा. इस उदाहरण में, यहfirestore-bigquery-export/.env.my-projectपर मौजूद है.इस प्रोसेस को हर इंस्टेंस के लिए एक बार दोहराया जा सकता है. इससे
.envफ़ाइलों का एक सेट बनता है. इसमें आपके एक्सटेंशन इंस्टेंस के सभी कॉन्फ़िगरेशन होते हैं. इनका इस्तेमाल बाद में माइग्रेशन के दौरान किया जा सकता है.एक्सपोर्ट की गई
.envफ़ाइलों को किसी बेहतर जगह पर ले जाएं:आपके एक्सटेंशन से एक्सपोर्ट की गई
.envफ़ाइलों को सीधे आपके Firebase प्रोजेक्ट में रखा गया था. हालांकि, अगर आपने फ़ंक्शन किट पर माइग्रेट नहीं किया है, तो आपको इनकी रोज़ाना ज़रूरत नहीं पड़ेगी. इन्हें अपने प्रोजेक्ट से किसी अन्य स्टोरेज लोकेशन पर तब तक ले जाया जा सकता है, जब तक आपको इनकी ज़रूरत न हो या इन्हें मिटाने का विकल्प न चुना जाए.