使用擴充清單管理專案配置

擴充清單是擴充實例及其配置的清單。透過清單,您可以:

  • 與其他人分享您的擴充配置
  • 在不同專案之間複製擴充配置(例如從臨時專案到生產專案)
  • 立即部署所有擴充
  • 使用 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