获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

使用扩展清单管理项目配置

扩展清单是扩展实例及其配置的列表。使用清单,您可以:

  • 与他人共享您的扩展配置
  • 在不同项目之间复制扩展配置(例如从暂存项目到生产项目)
  • 一次部署所有扩展
  • 使用 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