基于 Vue Vben Admin 的二次开发项目,使用 Nest 框架构建后端服务,适配 vben 原有的 mock 接口调用。
- 新增 Nest 服务:apps/server, 服务按 apps/backend-mock 的接口规范适配
- 启动 playground 查看效果:pnpm dev:play
- apps 下其他 web- 前缀前端页面未改动,可正常打开,仍调用 apps/backend-mock 的 mock 服务
- 框架:NestJS(REST API)
- 校验与转换:class-validator / class-transformer
- 鉴权:全局 AuthGuard + @Public;JWT(access/refresh)
- 数据层:PostgreSQL + Prisma(支持 migrate + seed 初始化)
- decorators:Public、RawResponse(控制鉴权/是否包装响应)
- guards:AuthGuard(Bearer access token 校验)
- interceptors:ResponseInterceptor(统一响应包装)
- filters:HttpExceptionFilter(统一异常输出)
- dto:ApiResponse、PaginatedResponse(响应结构)
- utils:jwt、response、mock-data(token/响应/模拟数据)
- auth:登录、刷新、登出、权限码 codes
- user:用户信息
- system:部门(dept)、菜单(menu)、角色(role)
- table / timezone / upload / demo:示例接口
- Node.js >= 20.19
- pnpm >= 10(推荐使用 corepack)
- Docker Desktop(推荐,用于一键启动 PostgreSQL;不使用 Docker 也可自行安装 PostgreSQL)
git clone https://github.com/MiniJude/vben-nest.gitcd vben-nest
npm i -g corepack
pnpm installdocker compose -f apps/server/docker-compose.yml up -d
# 初始化数据库结构与种子数据(会写入默认用户/角色/菜单/部门等)
pnpm -F @vben/server run db:init默认数据库连接串位于 apps/server/.env.development(Nest 运行时)与 apps/server/prisma/.env(Prisma CLI)。
如果你不使用 Docker,请自行准备一个 PostgreSQL 实例,并把 DATABASE_URL 改成你的连接信息后再执行 db:init。
pnpm -F @vben/server run dev
# 默认端口:3000(可在 apps/server/.env.development 中修改 PORT)pnpm dev:playpnpm build- vben / 123456
- admin / 123456
- jack / 123456
- Prisma 相关命令报错或找不到引擎:先在仓库根目录重新执行
pnpm install再重试(本项目已为 Prisma 配置了构建许可白名单)。 - 端口占用:修改
apps/server/.env.development的PORT后重启后端。