Firebase App Hosting 专为支持以框架为中心的现代 Web 应用开发而设计。您可以将本页作为参考,了解 App Hosting 直接支持的工具和框架,也可以从本页出发,了解相关框架和工具。
Web 框架和 App Hosting
App Hosting 为现代 Web 框架提供两个广泛的支持级别:预配置的构建和部署支持,以及通过符合输出软件包规范的开源贡献提供的社区级支持。在这两种情况下,框架适配器组件都能实现特定框架与 App Hosting 的集成。
具有预配置的 build 和部署支持的框架
借助预配置的 build 和部署支持,Firebase 会通过检查 package-lock.json 文件或其他锁定文件来识别您使用的框架,并针对您的应用优化 build 和部署流程。Google 致力于维护对这些框架的支持,Firebase 支持团队可以接受问题报告和功能请求。
此支持级别适用于:
- Next.js
- Angular
如需详细了解具体版本和支持级别,请参阅支持时间表。
如果您尝试部署缺少锁定文件的 Node.js 应用,App Hosting 将无法构建和运行您的应用。您可以在根目录中运行 npm install 来创建 package-lock.json。
社区支持的框架
除了 Next.js 和 Angular,App Hosting 还支持任何能够提供符合我们输出软件包规范的 build 输出的 Web 框架。框架作者可以利用输出软件包规范来确保其框架受 App Hosting 支持。例如,热门的 Nuxt 框架由 Nitro 团队提供支持,该团队构建了一个 Firebase 适配器,以实现在 App Hosting 上部署 Nuxt 应用。
如果您希望 App Hosting 支持更多框架,可以创建框架适配器,也可以与框架的维护人员联系,将 build 输出转换为 App Hosting 格式。Next.js 和 Angular 适配器是创建适配器的任何人的良好参考示例。
如需了解社区支持的框架,请访问 Firebase 开源。 对于社区支持的框架,问题和功能请求应直接提交给开源社区或框架作者。在某些情况下,Google 可能会提供帮助,但对于这些适配器,社区是第一道支持防线。
App Hosting 框架适配器
在 App Hosting 中,通过框架适配器提供对预配置框架和社区支持框架的支持。App Hosting 框架适配器有两项关键作用:
- 它们会解析您的源代码和任何框架特定的配置文件(例如
next.config.js),并生成可由 App Hosting 基础架构的其余部分处理的输出软件包。 - 它们会运行应用的 build 命令来生成静态资源,并创建应用的优化版以用于正式版。
框架适配器使用 npm run build 构建 Node.js 应用,最适合搭配每个框架的默认 build 脚本使用:next build(适用于 Next.js)和 ng build(适用于 Angular)。App Hosting 将尝试使用自定义 build 命令进行 build,但无法可靠地保证成功。您可以在 apphosting.yaml 中替换 build 和运行脚本。
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 的 build-time 错误。每次更改engines字段时,请务必在部署之前更新后端的运行时。
停用 ABIU
如果您想停用 ABIU,可以在初始配置期间停用,也可以在 Firebase 控制台中为运行时选择“未指定”。使用无版本 nodejs 默认值时,系统会自动停用 ABIU。
管理运行时版本
您可以随时在 App Hosting 信息中心的设置标签页中查看和更改后端的运行时版本和 ABIU 偏好设置。不过,请注意,如果新版本与您的代码不兼容,更改运行时版本可能会导致应用中断。
运行时版本最终会达到支持生命周期的终点。请务必及时更新运行时,以免发生重大更改:
- 已弃用的运行时:如果您选择的运行时已被弃用,您的应用通常会继续运行。您会在控制台中收到警告,应尽快迁移到较新版本。 如需了解详情,请参阅运行时生命周期的 Cloud Run 文档。
- 已停用的运行时:已停用的运行时完全不受支持。您将无法使用已停用的版本创建新的 build 或后端,如果尝试这样做,系统会抛出 build 错误。在已停用的版本上运行的现有部署可能会停止运行,并且 Cloud Run 保留删除这些部署的权利。
如需查看受支持、已弃用和已停用的 Node 版本的完整列表,请参阅Cloud Run 运行时支持文档。如需详细了解基础映像更新的工作原理,请参阅 Cloud Run ABIU 文档。
软件包管理系统
App Hosting 使用 Cloud Native Buildpack 执行依赖项安装,并使用 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 告知我们。