NestBase 项目完整文件清单
📁 项目文件结构(共 46 个文件)
🔧 根目录配置文件(10 个)
├── .env.example # 环境变量模板
├── .gitignore # Git 忽略配置
├── .prettierrc # Prettier 格式化配置
├── nest-cli.json # NestJS CLI 配置
├── package.json # 项目依赖和脚本
├── tsconfig.json # TypeScript 编译配置
├── README.md # 完整项目文档(800+ 行)
├── QUICKSTART.md # 快速启动指南
├── DELIVERY.md # 项目交付清单
├── postman_collection.json # API 测试集合
└── setup.sh # 自动化初始化脚本🗄️ Prisma 数据库(3 个)
prisma/
├── schema.prisma # 数据库模型定义(User 模型 + Role 枚举)
├── seed.ts # 测试数据种子(管理员 + 普通用户)
└── migrations/
└── .gitkeep # 保持目录存在🛠️ VSCode 配置(2 个)
.vscode/
├── settings.json # 编辑器配置
└── extensions.json # 推荐插件列表📦 源代码文件(31 个)
🏗️ 核心文件(3 个)
src/
├── main.ts # 应用入口(启动配置)
├── app.module.ts # 应用主模块(模块整合)
└── config/
└── swagger.config.ts # Swagger 文档配置(蓝色主题)🔐 认证模块(7 个)
src/modules/auth/
├── auth.module.ts # 认证模块配置
├── auth.controller.ts # 认证控制器(注册、登录、profile)
├── auth.service.ts # 认证服务(JWT 生成、验证)
├── dto/
│ ├── index.ts
│ ├── register.dto.ts # 注册数据验证
│ └── login.dto.ts # 登录数据验证
└── strategies/
└── jwt.strategy.ts # JWT Passport 策略👥 用户模块(7 个)
src/modules/users/
├── users.module.ts # 用户模块配置
├── users.controller.ts # 用户控制器(CRUD 接口)
├── users.service.ts # 用户服务(业务逻辑)
└── dto/
├── index.ts
├── create-user.dto.ts # 创建用户验证
├── update-user.dto.ts # 更新用户验证
└── query-user.dto.ts # 查询用户验证(分页、搜索)🗄️ Prisma 模块(2 个)
src/modules/prisma/
├── prisma.module.ts # Prisma 模块配置(全局)
└── prisma.service.ts # Prisma 服务(数据库连接)🧩 公共模块(12 个)
src/common/
├── index.ts # 统一导出
├── decorators/ # 装饰器(3 个)
│ ├── index.ts
│ ├── public.decorator.ts # @Public() 公开路由
│ ├── roles.decorator.ts # @Roles() 角色控制
│ └── current-user.decorator.ts # @CurrentUser() 获取当前用户
├── guards/ # 守卫(3 个)
│ ├── index.ts
│ ├── jwt-auth.guard.ts # JWT 认证守卫
│ └── roles.guard.ts # 角色权限守卫
├── interceptors/ # 拦截器(2 个)
│ ├── index.ts
│ └── transform.interceptor.ts # 响应格式转换
├── filters/ # 过滤器(2 个)
│ ├── index.ts
│ └── http-exception.filter.ts # 全局异常处理
└── pipes/ # 管道(2 个)
├── index.ts
└── validation.pipe.ts # 数据验证管道📊 文件统计
| 类型 | 数量 | 说明 |
|---|---|---|
| TypeScript 源文件 | 31 | 核心业务代码 |
| 配置文件 | 10 | 项目配置 |
| 文档文件 | 4 | README、指南等 |
| 数据库文件 | 3 | Prisma Schema 和 Seed |
| 工具文件 | 2 | VSCode 配置 |
| 总计 | 50 | - |
🎯 核心功能对应文件
1️⃣ JWT 认证体系
auth.service.ts- Token 生成与验证jwt.strategy.ts- Passport JWT 策略jwt-auth.guard.ts- JWT 认证守卫
2️⃣ 基于角色的访问控制(RBAC)
roles.decorator.ts- @Roles() 装饰器roles.guard.ts- 角色权限守卫schema.prisma- Role 枚举定义
3️⃣ 数据验证
*.dto.ts- 所有 DTO 文件(8 个)validation.pipe.ts- 全局验证管道
4️⃣ 统一响应格式
transform.interceptor.ts- 响应转换拦截器http-exception.filter.ts- 异常响应格式化
5️⃣ Swagger 文档
swagger.config.ts- Swagger 配置main.ts- Swagger 初始化- 所有 DTO -
@ApiProperty()装饰器
6️⃣ 数据库操作
prisma.service.ts- Prisma Client 封装schema.prisma- 数据模型定义seed.ts- 测试数据填充
🔗 模块依赖关系
AppModule (app.module.ts)
├── ConfigModule (全局环境变量)
├── PrismaModule (全局数据库服务)
├── AuthModule
│ ├── JwtModule (JWT Token)
│ ├── PassportModule (认证策略)
│ └── PrismaModule (数据库)
└── UsersModule
└── PrismaModule (数据库)
全局提供者:
├── APP_GUARD → JwtAuthGuard (全局 JWT 认证)
├── APP_INTERCEPTOR → TransformInterceptor (全局响应转换)
└── APP_FILTER → HttpExceptionFilter (全局异常处理)📝 每个文件的作用说明
认证流程文件
register.dto.ts- 验证注册数据auth.service.ts- 处理注册逻辑、生成 Tokenauth.controller.ts- 暴露注册接口login.dto.ts- 验证登录数据auth.service.ts- 验证密码、生成 Tokenjwt.strategy.ts- 验证 Token、提取用户信息
用户 CRUD 流程文件
*.dto.ts- 验证请求数据users.controller.ts- 接收 HTTP 请求users.service.ts- 执行业务逻辑prisma.service.ts- 操作数据库transform.interceptor.ts- 格式化响应
权限控制流程文件
jwt-auth.guard.ts- 检查 JWT Tokenjwt.strategy.ts- 解析 Token、获取用户roles.guard.ts- 检查用户角色roles.decorator.ts- 定义所需角色
🚀 关键路径
应用启动路径
main.ts
└── bootstrap()
├── NestFactory.create(AppModule)
├── setupSwagger(app) → swagger.config.ts
├── app.enableCors()
├── app.setGlobalPrefix('api')
├── app.useGlobalPipes(ValidationPipe)
└── app.listen(3000)请求处理路径
HTTP 请求
└── JwtAuthGuard (验证 Token)
└── RolesGuard (验证角色)
└── Controller (处理请求)
└── Service (业务逻辑)
└── PrismaService (数据库)
└── TransformInterceptor (格式化响应)✨ 项目亮点
- 完全模块化 - 每个功能独立模块,易于维护扩展
- 类型安全 - 100% TypeScript,完整类型定义
- 自动验证 - class-validator 自动验证所有输入
- 统一响应 - 全局拦截器统一响应格式
- 完善文档 - Swagger 自动生成,支持在线测试
- 开箱即用 - 提供测试数据、API 集合、初始化脚本
- 最佳实践 - 遵循 NestJS 官方推荐架构
创建时间: 2025-01-15 文件总数: 50 个 代码行数: ~3000 行 状态: ✅ 全部完成