如何在Nx Monorepo中集成AdonisJS与Angular搭建前后端模板
在Nx工作区中集成AdonisJS后端的方案
因为Nx官方暂未支持AdonisJS集成,你可以通过以下手动方式将AdonisJS项目纳入Nx工作区,保持前后端项目结构统一:
1. 在Nx工作区内创建AdonisJS项目
进入你的Nx工作区根目录,使用AdonisJS的初始化命令,将项目创建在Nx标准的apps目录下(比如命名为api):
npm init adonisjs@latest apps/api -- --kit=api --auth-guard=access_tokens --db=sqlite --no-git-init
参数说明:
--kit=api:创建纯API后端项目(若需全栈可改为web)--auth-guard=access_tokens:选用适配前后端分离的token认证方案--db=sqlite:默认使用sqlite,可按需替换为mysql/postgres--no-git-init:跳过git初始化,避免与Nx工作区的git仓库冲突
2. 配置Nx识别AdonisJS项目
在apps/api目录下创建project.json文件,定义Nx可执行的目标(与Angular项目命令风格统一):
{ "name": "api", "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "apps/api", "projectType": "application", "targets": { "dev": { "executor": "nx:run-script", "options": { "script": "dev", "cwd": "apps/api" } }, "build": { "executor": "nx:run-script", "options": { "script": "build", "cwd": "apps/api" } }, "test": { "executor": "nx:run-script", "options": { "script": "test", "cwd": "apps/api" } }, "exec": { "executor": "nx:run-script", "options": { "script": "exec", "cwd": "apps/api" } } } }
之后即可用Nx命令管理Adonis项目:
- 启动开发服务器:
nx run api:dev - 构建生产版本:
nx run api:build - 执行Adonis Ace命令:
nx run api:exec --command="npx ace make:controller User"
3. 统一依赖管理(可选)
为减少重复依赖,可将AdonisJS的依赖从apps/api/package.json迁移到Nx根目录的package.json,删除apps/api下的node_modules和锁文件后,在根目录执行npm install完成依赖安装。
4. 前后端跨域配置
在Angular项目中添加代理配置,解决跨域问题:
- 在Angular项目根目录创建
proxy.conf.json:
{ "/api": { "target": "http://localhost:3333", "secure": false, "changeOrigin": true } }
- 在Angular项目的
project.json中,修改serve目标的options,添加proxyConfig:
"serve": { "executor": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "frontend:build", "proxyConfig": "apps/frontend/proxy.conf.json" } }
这样Angular项目的/api请求会自动转发到AdonisJS的开发服务器。
常见问题处理
- 端口冲突:修改
apps/api/.env中的PORT变量,比如改为3334 - Nx缓存干扰:在
nx.json的tasksRunnerOptions中,为api项目的build任务禁用缓存,或调整缓存策略 - Ace命令执行:确保通过
nx run api:exec执行Adonis代码生成命令,避免路径错误
内容的提问来源于stack exchange,提问作者AzPogoDev
相关产品推荐
相关产品推荐

