在多个网站中共享项目的资源

您可以在单个 Firebase 项目中设置一个或多个 Firebase 托管网站。每个网站都有各自特有的一系列静态资源,具有各自的托管配置,并且可以拥有一个或多个关联的网域。由于这些网站全都在同一个 Firebase 项目中,因此所有网站都可以访问该项目的其他 Firebase 资源。

通过在同一个 Firebase 项目中定义多个托管网站,您可以更轻松地在相关网站和应用之间共享 Firebase 资源。例如,如果您的博客、管理面板和公开应用都设置为同一 Firebase 项目中的网站,则它们可以在共享同一个 Firebase 身份验证用户数据库的同时,具有自己的独特网域或静态资源。

添加其他网站

您可以直接在 Firebase 托管页中向 Firebase 项目添加其他网站。对于每个网站,您还可以视需要添加自定义域名,以便向多个网址提供相同的内容和配置。

删除辅助网站

您可以直接从 Firebase 托管页中删除不需要的网站。请注意,您无法删除与 Firebase 项目同名的默认网站。

为您的网站设置部署目标

当您有多个网站并运行 Firebase CLI 部署命令时,CLI 需要通过某种方式传达应向每个网站部署哪些设置。借助部署目标,您就可以使用特定网站在 firebase.json 配置文件Firebase CLI 命令中的 target-name 以独一无二的方式标识该网站。

要创建部署目标并将 target-name 应用到托管网站,请从项目目录的根目录下运行以下 CLI 命令:

firebase target:apply hosting target-name resource-name

其中的参数是:

  • target-name -(您自己定义的)要部署到的目标托管网站的唯一标识符

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

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

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

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

为每个网站定义托管配置

当您在 firebase.json 文件中定义网站的托管配置时,请使用该网站的 target-name。

  • 如果您的 firebase.json 文件为多个网站定义了该配置,请使用数组格式:

    {
      "hosting": [ {
          "target": "blog", // "blog" is the applied target-name for the Hosting site myapp-blog.
          "public": "blog/dist"
        },
        {
          "target": "app", // "app" is the applied target-name for the Hosting site myapp-app.
          "public": "app/dist",
          "rewrites": [...] // You can define specific hosting configurations for each site.
        }
      ]
    }
    
  • 如果您的 firebase.json 文件仅为一个网站定义了该配置,则无需使用数组格式:

    {
      "hosting": {
          "target": "blog",
          "public": "dist"
          "rewrites": [...]
      }
    }
    

部署到您的网站或在本地提供

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

命令 说明
firebase deploy 为项目目录中所有可部署的资源创建版本
firebase deploy --only hosting:target-name 仅为所指定的托管目标的资源创建版本
firebase serve 在本地提供您的 Firebase 项目
firebase serve --only hosting:target-name 仅在本地提供所指定的托管目标的资源

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面