使用擴展清單管理項目配置

擴展清單是擴展實例及其配置的列表。通過清單,您可以:

  • 與其他人分享您的擴展配置
  • 在不同項目之間複製擴展配置(例如從臨時項目到生產項目)
  • 立即部署所有擴展
  • 使用 Firebase 本地模擬器套件測試您的擴展程序如何與您的應用配合使用
  • 將您的擴展配置提交到源代碼管理
  • 在 CI/CD 管道中包含擴展

擴展清單有兩部分:

  • firebase.jsonextensions部分,它是實例 ID 到擴展版本引用的映射。例如:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • .env文件包含每個擴展實例的配置,位於 Firebase 項目目錄的extensions/子目錄中。例如, storage-resize-images的實例可能具有如下所示的.env文件:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

創建擴展清單

構建擴展清單的方法有以下三種:

  • 使用 Firebase CLI 管理您的擴展清單
  • 導出項目的擴展配置
  • 手動編輯清單文件

下面解釋前兩種方法。

使用 Firebase CLI 管理您的擴展清單

您可以使用--local選項運行大多數 Firebase CLI 的ext:命令來更新擴展清單,而無需實際更改項目的當前配置。

例如:

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

導出項目的擴展配置

要將項目的當前擴展配置保存到清單中,請執行以下操作:

  1. 如果您尚未這樣做,請設置 Firebase CLI
  2. 從 shell 提示符中,切換到項目目錄。 (您的項目目錄包含文件firebase.json )。
  3. 運行ext:export命令:
    firebase ext:export

ext:export命令會將extensions部分添加到firebase.json文件中。此外, ext:export命令會為您安裝的每個擴展實例創建一個包含.env文件的extensions目錄。這些文件包含每個實例的配置參數。

使用 Firebase 本地模擬器套件測試擴展配置

將一些擴展實例添加到擴展清單後,您可以使用本地模擬器套件對其進行測試。

  1. 安裝並配置本地模擬器套件

  2. 啟動本地模擬器套件

    • 要以交互方式運行模擬器套件,請運行: firebase emulators:start
    • 要運行模擬器套件並執行測試腳本,請運行: firebase emulators:exec my-test.sh

現在,如果清單中列出了擴展實例,本地模擬器套件會將這些擴展的源代碼下載到~/.cache/firebase/extensions 。下載後,本地模擬器套件將啟動,您將能夠觸發任何擴展程序的後台觸發功能,並將您的應用程序連接到模擬器套件以測試它們與您的應用程序的集成。

將擴展配置部署到項目

將一些擴展實例添加到擴展清單後,您可以使用 Firebase CLI 將其部署到項目中。使用擴展清單進行部署時,您可以立即將清單中的所有擴展實例安裝、更新和配置到項目中。

要部署擴展清單:

  1. 從 shell 提示符中,更改到包含已保存的擴展配置的目錄。 (這是包含firebase.json目錄。如果您剛剛運行ext:export ,那麼您已經位於正確的目錄中。)
  2. 運行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中。

有時,您可能希望在模擬擴展時使用不同的參數值:例如,您可能希望提供測試 API 密鑰而不是生產密鑰。將這些參數放入.local文件中:

  • 將仿真過程中要使用的非秘密參數放入extensions/ EXTENSION_INSTANCE_ID .env.local
  • 將秘密參數值放入extensions/ EXTENSION_INSTANCE_ID .secret.local