Skip to content

项目介绍

在学习 NestJS 和 Prisma 的过程中,随着项目的增多,发现一个入门级的项目模板是很有帮助的,首先我们不需要花太多时间来重复造轮子,并且基于官方文档的封装,也可以很快的上手。

而一个入门的项目模板,对于新手来说,简直就是最好的一个学习工具,当然如果你是老手,也不用担心,你也可以根据自己的需求进行定制。

项目特性

  • 统一错误异常处理: 支持自定义 code、message、status 属性;
  • 统一接口响应格式: 通过全局序列化处理,可过滤掉一些字段,也可格式化字段属性;
  • 便捷的日志管理: 集成 pino 日志库,支持日志文件、控制台的输出切换;
  • 集成 Swagger: 提供可视化 API 文档;
  • 封装 DTO 校验管道: 结合统一错误异常处理,实现便捷的参数校验;
  • 封装常用的图片上传功能: 支持单图、图片组、多图上传(文件上传可以基于此自行封装);
  • 便捷的环境变量管理: 支持指定自定义环境变量文件;
  • 封装 JWT 鉴权处理: 默认全局鉴权,配合Public装饰器可实现无需鉴权的接口;
  • 封装全局请求内容类型校验: 默认请求头Content-Type: application/json,可自定义控制器的接口请求类型;
  • 封装全局 Axios 请求服务: 由于后端对接第三方服务返回的值类型不统一,如有需要,可基于此封装自定义请求服务;
  • 集成 Prisma 数据库 ORM: 支持数据填充模式切换,全局 PrismaService,完善的数据库日志记录和初始化连接异常处理;
  • 基本安全配置: 包括跨域设置、头信息安全处理等;
  • 模块化架构: 拆分业务模块(modules)、公共模块(shared)、公共工具等(common);
  • 便捷的工具函数封装: 如获取项目根目录、项目目录地址拼接、环境变量校验等;
  • 一键生成入口文件: 通过预设脚本命令一键生成入口文件index.ts
  • 常见命令脚本封装:npm-run-all2实现多命令自由组合执行;
  • 配置常用的 EsLint 规则和 Prettier 代码格式化规则: 确保代码风格统一;

项目结构

bash
nestjs-prisma-template
├─ prisma
  ├─ migrations
  ├─ schema.prisma
  └─ seed
     └─ index.ts
├─ scripts
├─ src
  ├─ app.controller.spec.ts
  ├─ app.controller.ts
  ├─ app.module.ts
  ├─ app.service.ts
  ├─ common
  ├─ decorators
  ├─ dto
  ├─ entities
  ├─ enum
  ├─ filters
  ├─ guards
  ├─ http-exception
  ├─ interceptors
  ├─ pipes
  └─ result-class
  ├─ main.ts
  ├─ modules
  └─ auth
  ├─ shared
  ├─ custom-http-exception
  ├─ prisma
  ├─ services
  └─ request
  ├─ shared.module.ts
  └─ upload
  ├─ swagger
  └─ index.ts
  └─ utils
├─ .eslintrc.js
├─ .gitattributes
├─ .gitignore
├─ .prettierignore
├─ .prettierrc.json
├─ barrelsby.json
├─ nest-cli.json
├─ package.json
├─ pnpm-lock.yaml
├─ README.md
├─ tsconfig.build.json
└─ tsconfig.json