ไปที่คอนโซล

部署目标

部署目标是 Firebase 项目中的 Firebase 资源的短名称标识符(由您自己定义),例如具有特有静态资源的托管网站或具有相同安全规则的一组实时数据库实例。

当您拥有多个托管网站、多个 Cloud Storage 存储分区或多个实时数据库实例时,部署目标会非常有用。借助部署目标,Firebase CLI 可以将设置部署到项目中的特定 Firebase 资源或资源组,例如:

  • 每个托管网站的托管配置
  • 每个托管网站的项目目录中的静态资源
  • 多个实时数据库实例或多个 Cloud Storage 存储分区共享的安全规则

要设置部署目标,请执行以下操作:

  1. 将目标名称应用于目标 Firebase 资源或 Firebase 资源组。
  2. firebase.json 文件中,在配置每个资源或资源组的设置时引用关联的目标名称

运行 Firebase CLI 命令(如 firebase deploy)时,Firebase CLI 会将目标名称与其关联的 Firebase 资源配对。然后,CLI 会向您的 Firebase 项目传达每项资源的设置。

为 Firebase 资源设置部署目标

使用 Firebase CLI,将目标名称(您自己定义的短名称标识符)应用于 Firebase 资源或 Firebase 资源组。Firebase 支持为以下各项资源设置部署目标:

部署目标的设置存储在项目目录下的 .firebaserc 文件中,以便您一次只需为一个项目设置部署目标。

为托管设置部署目标

要创建部署目标并将目标名称应用于托管网站,请运行以下 CLI 命令:

firebase target:apply type target-name resource-name

其中的参数是:

  • type - 相关的 Firebase 资源类型

    • 对于 Firebase 托管网站,请使用 hosting
  • target-name - 要部署到的托管网站的唯一标识符

  • resource-name - Firebase 项目中列出的托管网站的名称

例如,如果您在 Firebase 项目中创建了两个网站myapp-blogmyapp-app),则可以通过运行以下命令对每个网站(分别为 blogapp)应用唯一的目标名称

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

为 Cloud Storage 或实时数据库设置部署目标

要创建部署目标并将目标名称应用于 Cloud Storage 或实时数据库资源,请运行以下 CLI 命令:

firebase target:apply type target-name resource1-name resource2-name ...

其中的参数是:

  • type - 相关的 Firebase 资源类型

    • 对于 Cloud Storage 存储分区,请使用 storage
    • 对于实时数据库实例,请使用 database
  • target-name - 共享安全规则的资源或资源组的唯一标识符

  • resource-name - Firebase 项目中列出的共享安全规则的资源名称(例如存储分区名称或数据库实例名称)

例如,您可以运行以下命令,将 main 的目标名称应用于包含三个区域级 Cloud Storage 存储分区(具有同样的安全规则)的一组资源中:

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

配置 firebase.json 文件以使用部署目标

为 Firebase 资源设置部署目标后,请引用 firebase.json 配置文件中应用的目标名称

  1. 为每个 Firebase 资源类型hostingstoragedatabase)创建一组配置对象。
  2. 在这些组中,指定 target(使用目标名称)并定义关联的 Firebase 资源或资源组的设置。

我们接着上面的示例操作,由于您的 Firebase 项目有两个托管网站和三个 Cloud Storage 存储分区(具有相同的安全规则),因此您的 firebase.json 文件会如下所示:

{
  "hosting": [ {
      "target": "blog",  // "blog" is the applied target name for the Hosting site "myapp-blog"
      "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"

      // ...
    },
    {
      "target": "app",  // "app" is the applied target name for the Hosting site "myapp-app"
      "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"

      // ...

      "rewrites": [...]  // You can define specific Hosting configurations for each site
    }
  ]
}

{
  "storage": [ {
      "target": "main",  // "main" is the applied target name for the group of Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

如果您的资源有多个配置,则您可以创建多个部署目标,并在 firebase.json 文件中分别指定每个目标。当您运行 firebase deploy 时,所有关联的资源均会一同部署。

使用部署目标向特定 Firebase 资源部署设置

从项目目录的根目录下运行以下任一命令。

命令 说明
firebase deploy 为项目目录中所有可部署的资源创建版本
firebase deploy --only hosting:target-name 仅为所指定的托管目标的资源创建版本
firebase deploy --only storage:target-name 仅部署指定 Cloud Storage 目标的规则文件
firebase deploy --only database:target-name 仅部署指定实时数据库目标的规则文件

在部署到 Firebase 项目之前,请运行以下任一命令以在本地测试您的网站

firebase serve
firebase serve --only hosting:target-name

管理部署目标

部署目标的设置存储在项目目录下的 .firebaserc 文件中。您可以通过从项目目录的根目录下运行以下任一命令来管理项目的部署目标。

命令 说明
firebase target 列出当前项目目录的部署目标
firebase target:remove type resource-name 将资源从分配到的目标中移除
firebase target:clear type target-name 从指定目标中移除所有资源或托管网站

removeclear 命令会自动更新项目目录下 .firebaserc 文件中的部署目标设置。