Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

在本地测试,共享更改,然后实时部署

在部署到您的实时站点之前,您需要查看和测试您的更改。 Firebase 托管使您能够在本地查看和测试更改,并与模拟的后端项目资源进行交互。如果您需要您的团队成员查看和测试您的更改,Hosting 可以为您的站点创建可共享的临时预览 URL。我们甚至支持GitHub的整合从拉请求部署。

在你开始之前

完成上列出的步骤主机使用入门页,具体有以下任务:

  1. 安装 Firebase CLI 或将其更新到最新版本。
  2. 将本地项目目录(包含您应用的内容)连接到您的 Firebase 项目。

您可以选择部署应用的托管内容和配置,但这不是执行此页面上的步骤的先决条件。

第1步:本地测试

如果您进行快速迭代或希望您的应用程序与模拟后端项目资源进行交互,您可以在本地测试您的托管内容和配置。在本地测试时,Firebase 在本地托管的 URL 上为您的网络应用提供服务。

托管是部分火力地堡本地仿真器套件,使您的应用程序与您的模拟托管内容和配置进行交互,以及可选的模拟项目资源(功能,数据库和规则)。

  1. (可选)默认情况下,本地托管应用程序将与真正的,而非模拟的,项目资源(功能,数据库,规则等)进行交互。您可以改为可选连接您的应用程序使用任何模拟的项目资源已经配置。了解更多:实时数据库|云公司的FireStore |云功能

  2. 从本地项目目录的根目录,运行以下命令:

    firebase emulators:start
  3. 在由CLI返回的本地URL打开Web应用程序(通常是http://localhost:5000 )。

  4. 要使用更改更新本地 URL,请刷新浏览器。

从其他本地设备测试

默认情况下,模拟器只响应来自请求localhost 。这意味着您将能够从计算机的 Web 浏览器访问托管内容,但不能从网络上的其他设备访问。如果你想从其它本地设备测试,配置firebase.json像这样:

"emulators": {
    // ...

    "hosting": {
      "port": 5000
      "host": "0.0.0.0"
    }
  }

步骤2:预览和共享

如果您希望其他人在上线之前查看您的 Web 应用程序的更改,您可以使用预览频道。

在您部署到预览频道后,Firebase 会在“预览网址”(一个可共享的临时网址)为您的网络应用提供服务。当使用预览URL,对所有项目资源的真正后台的Web应用程序进行交互。

请注意,尽管预览 URL 很难猜测(因为它们包含随机哈希),但它们是公开的。因此,任何知道 URL 的人都可以访问它。

  1. 从本地项目目录的根目录,运行以下命令:

    firebase hosting:channel:deploy CHANNEL_ID

    替换CHANNEL_ID与没有空格的字符串(例如, feature_mission-2-mars )。此 ID 将用于构建与预览频道关联的预览 URL。

  2. 在 CLI 返回的预览 URL 中打开您的 Web 应用程序。它会是这个样子: PROJECT_ID -- CHANNEL_ID - RANDOM_HASH .web.app

  3. 要使用更改更新您的预览 URL,请再次运行相同的命令。确保指定相同CHANNEL_ID的命令。

了解有关管理预览渠道,包括如何设置频道的到期。

Firebase 托管支持 GitHub 操作,当您提交对拉取请求的更改时,该操作会自动创建和更新预览 URL。了解如何设置和使用此GitHub的行动

第3步:现场部署

当您准备好与全世界分享您的更改时,请将您的托管内容和配置部署到您的实时频道。 Firebase 为这一步提供了几个不同的选项,具体取决于您的用例(请参阅下面的选项)。

选项 1:从预览频道克隆到您的直播频道

该选项提供了信心,你部署到直播频道的确切内容和配置您在预览通道进行测试。了解更多关于克隆版本

  1. 从任何目录,运行以下命令:

    firebase hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:live

    将每个占位符替换为以下内容:

    • SOURCE_SITE_IDTARGET_SITE_ID :这些是包含在渠道的托管网站的ID。

      • 对于您的默认托管站点,请使用您的 Firebase 项目 ID。
      • 您可以指定位于同一 Firebase 项目甚至不同 Firebase 项目中的站点。
    • SOURCE_CHANNEL_ID :这是当前服务所需的版本部署到您的直播频道的频道IDENTIFER。

      • 对于直播频道,使用live的信道ID。
  2. 查看您的更改(下一步)。

选项 2:从您的本地项目目录部署到您的直播频道

此选项使您可以灵活地调整特定于直播频道的配置或进行部署,即使您尚未使用预览频道。

  1. 从本地项目目录的根目录,运行以下命令:

    firebase deploy --only hosting
  2. 查看您的更改(下一步)。

第4步:查看在您网站上的变化

上述两个选项都将您的托管内容和配置部署到以下站点:

  • Firebase 为您的默认托管站点和任何其他托管站点配置的子域:
    SITE_ID .web.app (如PROJECT_ID .web.app
    SITE_ID .firebaseapp.com (如PROJECT_ID .firebaseapp.com

  • 任何自定义域,您已经连接到您的虚拟主机网站()

要限制部署到特定的托管网站,指定部署目标在你的CLI命令。

其他部署活动和信息

为部署添加注释

您可以选择向部署添加注释。此注释将显示在其他部署信息托管仪表板的火力地堡控制台。例如:

firebase deploy --only hosting -m "Deploying the best new feature ever."

添加部署前和部署后脚本任务

您可以选择连接shell脚本的firebase deploy命令执行预先部署或postdeploy任务。例如,部署后挂钩可以通知管理员新的站点内容部署。请参阅火力地堡CLI文件的更多细节。

缓存部署的内容

当一个请求静态内容制作,火力地堡托管自动缓存的CDN内容。如果重新部署您的网站内容,火力地堡自动清除整个CDN所有缓存的静态内容,使新的请求收到您的新内容。

请注意,您可以配置的动态内容缓存

通过 HTTPS 提供服务

确保所有未托管在 Firebase 托管上的外部资源都通过 SSL (HTTPS) 加载,包括任何外部脚本。大多数浏览器不允许用户加载“混合内容”(SSL 和非 SSL 流量)。

下一步