借助单仓库,您可以在单个目录中整理和管理多个项目。本指南介绍了如何开始使用 App Hosting 部署基于 Nx 的应用。
使用 Firebase CLI 部署单 repo
Firebase CLI 命令 apphosting:backends:create
调用的后端设置流程中内置了对单仓库的支持。进入此流程并指定所选的 GitHub 代码库后,系统会提示您指定相对于代码库的应用根目录;在此提示中,传递您要在单仓库中部署的应用的路径:
$ firebase apphosting:backends:create --project [project-name] --location us-central1
i === Import a GitHub repository
✔ Connected with GitHub successfully
? Which GitHub repo do you want to deploy? gh-username/nx-monorepo
? Specify your app's root directory relative to your repository path/to/app
例如,如果您使用以下 Nx 项目结构,并将“target-app”作为要构建和部署的应用,则系统会部署以下资源:
.
├── lib
├── apps
│ └── target-app
│ ├── project.json
│ └── src
│ └── ...
├── nx.json
├── package-lock.json
└── package.json
相对于代码库的应用根目录为 apps/target-app
。
使用 Firebase 控制台部署单 repo
Firebase 控制台中的图形后端设置流程中内置了对单仓库的支持。当系统在“部署设置”下提示您输入“根目录”时,请指定您要在单仓库中部署的应用的路径:
排查 monorepo 部署问题
- 如果您在后端设置期间将“根目录”字段留空,则 App Hosting 可能仍能够构建和部署用户的目标项目,前提是该项目在相关 nx.json 配置文件的
defaultProject
中指定。 - 如果您既未指定“根目录”字段,也未指定
defaultProject
,则构建将失败,并显示一条消息,指出 App Hosting 无法在 Nx Monorepo 中找到要定位到的项目。 - 对于 Nx + Angular 应用,您必须使用 Angular 应用构建器构建应用。Angular 应用构建器在
project.json
中指定