Skip to main content

多环境配置

安装

pnpm add -S @nestjs/config && pnpm add cross-env

使用官方提供基于dotenv@nestjs/config库与cross-env搭配多环境变量

使用

app.module文件进行导入imports

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
imports: [ConfigModule.forRoot({
isGlobal: true, // 全局注册
envFilePath: ['.env.development', '.env.production','.env'], // 本地开发, 生产环境, 通用环境变量
})],
})
export class AppModule {}

app.module 继续添加切换环境代码

// 通过脚本指令更改运行时加载的环境变量文件
const envFilePath = ['.env'];
// 定义初始环境为开发环境
export const IS_DEV = process.env.RUNNING_ENV !== 'prod';
// 环境切换
if (IS_DEV) {
// 切换到并优先加载开发环境文件
envFilePath.unshift('.env.development');
} else {
// 切换到并优先加载生产环境文件
envFilePath.unshift('.env.production');
}

package.json文件添加脚本

cross-env RUNNING_ENV 属性

  • dev: 本地开发环境
  • prod: 生产环境
{
"scripts": {
"start": "cross-env RUNNING_ENV=dev nest start",
"start:dev": "cross-env RUNNING_ENV=dev nest start --watch",
"start:prod": "cross-env RUNNING_ENV=prod node dist/main",
},
}

main文件测试

import { NestFactory } from '@nestjs/core';
import { AppModule, IS_DEV } from './app.module';

const PORT = 4000;
console.log(PORT, IS_DEV);

async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(PORT);
}

bootstrap();

参考

1 掘金