- 日志集成链路追踪
- 上传文件Demo
- 分片上传、下载文件Demo
- 集成爬虫模块
- passport实现用户鉴权、扫码登录
- 微服务、Monorepo模版
项目已集成 Eslint、Prettier、Commitlint,Git提交时进行校验
http://127.0.0.1:3000/doc
$ pnpm run compodoc
Typeorm使用nest提供的动态模块
项目中将Redis也封装为了动态模块
export class Xxx {
@Inject()
private readonly redis: Redis;
}
参考接口:/axios-example
export class Xxx {
@Inject('Axios')
private readonly axios: AxiosInstance;
}
export class Xxx {
@Inject()
private readonly logger: CustomLogger;
}
项目接口请求、响应日志已集成到日志中
[Nest] [2024-07-17 10:25:56.913] [2e81f11d-d3d6-45f1-b692-53f07c175fde] [info] [请求] [POST][/user/login]
[Nest] [2024-07-17 10:25:56.929] [2e81f11d-d3d6-45f1-b692-53f07c175fde] [info] [响应] [POST][/user/login][201] 接口响应内容
提供装饰器 @NoResponseLog() 关闭项目接口响应日志
发起三方请求、响应日志已集成到日志中(使用Axios发起请求)
[Nest] [2024-07-17 10:27:10.126] [616864ba-45f6-4768-8747-c66ad5e97e46] [info] [外部请求] [GET][https://httpbin.org/get]
[Nest] [2024-07-17 10:27:11.326] [616864ba-45f6-4768-8747-c66ad5e97e46] [info] [外部响应] [GET][https://httpbin.org/get][200] 接口响应内容
日志已集成traceId链路追踪
Console输出第三位 [616864ba-45f6-4768-8747-c66ad5e97e46] 就是traceId
资源放置于 /src/public/ 目录下
# 请求静态资源
http://127.0.0.1:3000/static/xxx
src/user # user模块实现了 登录拦截器、鉴权拦截器
src/email/email.module.ts
src/scheduler/scheduler.controller.ts
src/app.controller.ts
接口:/real-time-log
前端页面:http://127.0.0.1:3000/static/real-time-log.html
src/socket/socket.gateway.ts
参考接口:socket.gateway.ts下全部接口
前端页面:http://127.0.0.1:3000/static/socket.html
$ pnpm install
# 本地开发模式
$ pnpm start:dev
# 生产模式
$ pnpm start:prod
本项目使用 Github Action部署 ,提交PR到deploy分支即可自动部署
注意1:请提前配置.github/workflows/deploy.yml
文件中的secret字段
注意2:Dockerfile、ecosystem.config.cjs的路径均是相对于构建目录dist
$ pnpm compodoc
# 生成迁移文件
$ migration:generate
# 执行迁移文件
$ migration:run
# 撤回迁移
$ migration:revert
# 单元测试
$ pnpm run test
# e2e测试
$ pnpm run test:e2e
# 覆盖率
$ pnpm run test:cov
Nest is MIT licensed.