Firebase App Hosting 专为支持以框架为中心的 现代 Web 应用开发而设计。您可以使用此页面作为参考,了解工具和 框架,以及了解相关框架和工具的起点。App Hosting
Web 框架和 App Hosting
App Hosting 为现代 Web 框架提供两个广泛的支持级别: 预配置的构建和部署支持,以及通过 符合输出 bundle 规范的开源贡献提供的社区级支持。在这两种 情况下,框架适配器组件都可实现特定 框架与 App Hosting的集成。
具有预配置的构建和部署支持的框架
借助预配置的构建和部署支持,Firebase 会通过检查 package-lock.json 文件或其他锁定文件来识别您使用的框架,并针对您的应用优化构建和部署流程。Google 致力于维护对这些框架的支持,Firebase 支持团队可以接受问题报告和功能请求。
此级别的支持适用于:
- Next.js
- Angular
如需详细了解特定版本 和支持级别,请参阅 支持时间表。
如果您尝试部署缺少锁定文件的 Node.js 应用,App Hosting
将无法构建和运行您的应用。您可以在根目录中
运行 npm install 来创建 package-lock.json。
社区支持的框架
除了 Next.js 和 Angular 之外,App Hosting 还支持任何能够提供与我们的 输出 bundle 规范匹配的构建输出的 Web 框架。 框架作者可以利用输出 bundle 规范来 确保其框架受 App Hosting 支持。例如,热门的 Nuxt 框架由 Nitro 团队提供支持,该团队构建了一个 Firebase 适配器 ,以便在 App Hosting 上部署 Nuxt 应用。
如果您希望 App Hosting 支持其他框架,您 可以创建框架适配器,也可以与框架维护人员联系,将构建输出转换为 App Hosting 格式。对于创建适配器的任何人来说,Next.js 和 Angular 适配器都是很好的参考示例。
您可以在 Firebase 开源中找到有关社区支持的框架的信息。 对于社区支持的框架,问题和功能请求应直接发送给开源社区或框架作者。在某些情况下,Google 可能会提供帮助,但社区是这些适配器的第一道支持防线。
App Hosting 框架适配器
在 App Hosting 中,对预配置框架和社区支持 框架的支持都是通过 框架适配器 提供的。App Hosting 框架 适配器有两个关键角色:
- 它们会解析您的源代码和任何框架专用配置文件(例如
next.config.js),并生成可由 基础架构的其余部分处理的输出 bundle。App Hosting - 它们会运行应用的构建命令,以生成静态资源并为生产环境创建应用的优化版本。
框架适配器使用 npm run build 构建 Node.js 应用,最好使用每个框架的默认构建脚本:Next.js 的 next build 和 Angular 的 ng build。App Hosting 将尝试使用自定义构建
命令进行构建,但无法保证成功。您可以在
替换构建和运行脚本
中 apphosting.yaml。
Next.js 和 Angular 适配器的源代码位于 firebase-framework-tools 中。
App Hosting 的运行时
在 App Hosting 构建和发布后,您的 Node.js 应用会在 Cloud Run 修订版本中运行。因此,应用的运行时版本 应在 Cloud Run的支持范围 和您选择的 Web 框架的范围内。对于 Angular 和 Next.js 的预配置支持,这意味着支持以下 Node.js 版本:
- Next.js 13.5.x 及更高版本
- Angular 18.2.x 及更高版本
- Node.js 20 及更高版本
App Hosting 不会自动为新发布的 框架版本提供有效支持。在正式标记为 App Hosting 的“有效”版本之前,比我们当前指定的“有效” 版本更新的版本将被视为处于“预览”状态。
App Hosting 支持主要版本的最新次要版本的长期支持 (LTS),从其有效售后支持期限开始为期一年,前提是您在该次要版本中始终更新到最新的补丁程序版本。如需了解 Next.js 和 Angular 的详细信息,请参阅下表。
Next.js 支持时间表
| 版本 | 状态 | 弃用 |
|---|---|---|
| 13.5.x | lts | 2026-10-9 |
| 14.2.x | lts | 2026-10-9 |
| 15.0.x | 有效 | 不早于 2025-10-9 |
| 15.1.x | 有效 | 不早于 2025-10-9 |
| 15.2.x | 有效 | - |
Angular 支持时间表
| 版本 | 状态 | 弃用 |
|---|---|---|
| 18.2.x | lts | 2026-10-9 |
| 19.0.x | 有效 | 不早于 2025-10-9 |
| 19.1.x | 有效 | 不早于 2025-10-9 |
| 19.2.x | 有效 | - |
自动基础映像更新 (ABIU)
自动基础映像更新 (ABIU) 是一项功能,可自动将安全补丁程序应用于底层运行时环境,而无需您触发新的应用发布。
App Hosting 默认对新后端启用 ABIU,并满足以下 特定要求:
- 版本化运行时:如需使用 ABIU,您必须指定版本化运行时
(例如
nodejs20、nodejs22、nodejs24)。App Hosting 支持 偶数编号的 Node.js 版本,与 Cloud Run 的支持保持一致。 - package.json 匹配:您为 App Hosting
选择的 Node 版本必须与您的
package.json文件的engines字段中指定的版本兼容。如果存在不匹配,您将遇到构建时 错误,来自 Cloud Build。每当您更改engines字段时,请务必在部署之前更新后端的运行时。
停用 ABIU
如果您想停用 ABIU,可以在入职期间停用它,也可以在 Firebase 控制台中为运行时
选择 “未指定”。当使用无版本的 nodejs 默认值时,ABIU 会自动停用。
管理运行时版本
您可以随时在 App Hosting 控制台的 设置 标签页中查看和更改后端的运行时版本和 ABIU 偏好设置。但是,请注意,如果新版本与您的代码不兼容,更改运行时版本可能会导致应用中断。
运行时版本最终会达到其支持生命周期结束。请务必及时更新运行时,以避免重大更改:
- 已弃用的运行时 :如果您选择的运行时已弃用,您的应用通常会继续运行。您会在控制台中收到警告,应尽快迁移到较新版本。 如需了解详情,请参阅 Cloud Run 运行时 生命周期文档。
- 已停用的运行时 :已停用的运行时完全不受支持。您将无法使用已退役的版本创建新的构建或后端,尝试这样做会抛出构建错误。在已停用的版本上运行的现有部署可能会 停止运行,Cloud Run保留删除这些部署的权利。
如需查看受支持、已弃用和已停用的 Node 版本的完整列表, 请参阅 Cloud Run 运行时支持 文档。如需详细了解基础映像更新的工作原理,请参阅 Cloud Run ABIU 文档。
软件包管理器
App Hosting 使用 Cloud Native Buildpacks 执行依赖项安装,并使用 npm、yarn 或 pnpm 构建应用。不支持其他软件包管理器,例如 JSR。
NPM
- NPM 是默认的软件包管理器。
- 构建成功后,非生产依赖项将被剪除。
- 您可以使用
package.json文件中的engines.npm字段指定 npm 版本部分。
纱线
- 如果您在项目中添加
yarn.lock文件,则系统会改用 Yarn。 - 您可以在
package.json文件的engines.yarn或packageManager字段中指定要使用的 Yarn 版本。 - App Hosting 支持 Yarn2 PnP 模式。
Pnpm
- 如果您在项目中添加
pnpm-lock.yaml文件,则系统会改用 Pnpm。 - 您可以在
package.json文件的engines.pnpm或packageManager字段中指定 pnpm 的版本。 - 如需查看有效示例,请参阅 sample-node-pnpm。 应用。
App Hosting 的 Monorepo
App Hosting 支持基于 Nx 的应用。如需详细指导,请参阅将 Monorepo 与 App Hosting搭配使用。
支持以下 Nx 版本:
| 版本 | 状态 | 弃用 |
|---|---|---|
| 19.5.x | 维护 | 2025-10-9 |
| 19.6.x | 维护 | 2025-10-9 |
| 19.7.x | 维护 | 2025-10-9 |
| 19.8.x | lts | 2026-10-9 |
| 20.0.x | 有效 | 不早于 2025-10-9 |
| 20.1.x | 有效 | 不早于 2025-10-9 |
| 20.2.x | 有效 | 不早于 2025-10-9 |
| 20.3.x | 有效 | 不早于 2025-10-9 |
| 20.4.x | 有效 | 不早于 2025-10-9 |
| 20.5.x | 有效 | 不早于 2025-10-9 |
| 20.6.x | 有效 | 不早于 2025-10-9 |
| 20.7.x | 有效 | — |
如果您需要对其他类型的 Monorepo 工作区提供支持,请通过 Firebase UserVoice告知我们。