Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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

  • 與他人共享您的擴展配置
  • 在不同項目之間複製擴展配置(例如從暫存項目到生產項目)
  • 一次部署所有擴展
  • 使用 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命令將在firebase.json文件中添加一個extensions部分。此外, ext:export命令會為您安裝的每個擴展實例創建一個包含.env文件的extensions目錄。這些文件包含每個實例的配置參數。

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

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

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

  2. 啟動本地模擬器套件

    • 要以交互方式運行模擬器套件,請運行: firebase emulators:start
    • 要運行 Emulator Suite 並執行測試腳本,請運行: 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 密鑰而不是生產 API 密鑰。將這些參數放在.local文件中:

  • 將您要在模擬期間使用的非機密參數放入extensions/ EXTENSION_INSTANCE_ID .env.local
  • 將秘密參數值放入extensions/ EXTENSION_INSTANCE_ID .secret.local