Nest-加载环境文件
介绍
前俩篇讲解了快速入门nest,接下来大致介绍一下nest项目如何进行改造;
项目中一般都会用到中间件,拦截器,参数管道校验等等,接下来分多个方向大致介绍这些如何在项目中使用;
项目改造
类似于vue项目,有一些成熟的方案去管理你的项目,提交规范,代码风格,代码规范,环境变量等等;改造的范围大致分为以下几点:
- 不同的环境变量,设置对应不同的值
 - 设置跨域已经增强
http工具,设置全局的访问前缀; swagger文档生产文档,不再需要自己编写具体的文档说明;中间件,拦截器,定时任务等等;
加载不同的环境文件
这里有俩种的方案可以实现,dotenv和@nestjs/config
首先需要设置环境,根据变量区分是开发环境还是生产环境;
pnpm add -D cross-env安装cross-env,然后再package.json中找到scripts, 修改start启动命令:
{
	"scripts": {
		"start": "cross-env NODE_ENV=development nest start",
		"start:dev": "cross-env NODE_ENV=development nest start --watch",
		"start:debug": "cross-env NODE_ENV=development nest start --debug --watch"
	}
}dotenv
在项目根目录添加.env.development和.env.production;
在main.ts中添加如下:
import * as dotenv from "dotenv";
const { NODE_ENV } = process.env;
const envFile = `.env${NODE_ENV ? `.${NODE_ENV}` : ".production"}`;
dotenv.config({ path: envFile });这样就可以使用process.env.XXXX了
@nestjs/config
如果使用这种方案,那么就需要引入pnpm add @nestjs/config
import { ConfigModule } from "@nestjs/config";
@Module({
  imports: [
    // 加载环境配置文件
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath:
        process.env.NODE_ENV === 'development'
          ? '.env.development'
          : '.env.production',
    }),
  ]
})不过这需要在app.modules.ts中添加;
