这是一个功能丰富的基于 NestJS 框架的项目模板。
- 使用 TypeScript 开发
- 集成 Prisma ORM 用于数据库操作
- 集成 CI/CD 工作流
- 使用 pnpm 作为包管理器
- 集成 RabbitMQ 消息队列
- 集成 Redis 缓存
- 集成 OSS(minio)对象存储
- 集成 Mailer(ejs)邮件服务
- 集成 Pino Logger 日志系统
- 集成 Swagger API 文档
- Node.js (推荐版本 20)
- pnpm
- PostgreSQL 数据库
- Redis
- RabbitMQ
- Minio
点击 Use this template
按钮,创建项目。
- 修改
package.json
中的下列字段:
"name": "nest-template",
"version": "0.0.1",
"description": "",
"author": "gylove1994",
"private": true,
"license": "MIT",
-
修改
cd
中的your-repo-name
至项目名称 -
根据
.env.example
文件,创建.env.development
、.env.test
和.env.production
文件:
cp .env.example .env.development
cp .env.example .env.test
cp .env.example .env.production
注意:请根据实际情况修改
.env.development
、.env.test
和.env.production
文件中的配置。
如果使用
docker-compose-dev.yml
启动开发服务,那有关数据库、缓存、消息队列的配置不需要修改。
对象存储默认使用 Minio,但是由于Minio的配置复杂,故没有在
docker-compose-dev.yml
中启动 Minio 服务,如需本地启动 Minio 服务,请参考docker-compose-dev.yml
文件中的注释内容。
如果需要在非本地环境使用
Minio
服务,可以使用sealos提供的对象存储服务,简单快捷。(使用前述连接注册账号,我可以获得返利,感谢您支持本项目)
邮件服务
可以使用腾讯企业邮或者是forwardemail提供的邮件服务,具体请参考您选择的邮件提供商的文档。
由于本项目使用docker进行自动部署,所以需要安装docker仓库以进行自动部署,并配置docker仓库的secret:
REGISTRY_USERNAME: <docker username>
REGISTRY_PASSWORD: <docker password>
REGISTRY_URL: <docker registry>
可以使用sealos提供的docker仓库服务,一件部署,简单快捷。(使用前述连接注册账号,我可以获得返利,感谢您支持本项目)
如果使用docker的公开仓库,请将以下secret设置为下列值:
REGISTRY_USERNAME: <docker username>
REGISTRY_PASSWORD: <docker password>
REGISTRY_URL: docker.io
所有的服务配置文件都存放于src/configs
目录下,如果不需要某个服务,可以删除该服务对应的配置文件,并删除位于app.module.ts
中的配置以及相应的模块,否则会导致服务启动失败。
pnpm install
pnpm run env:start:dev
- 开发模式:
pnpm run start:dev
- 生产模式:
pnpm run build
pnpm run start:prod