希曼日记

多环境配置

本页目录 3
  1. 安装
  2. 使用
  3. 参考

安装

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

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

使用

app.module文件进行导入imports

JavaScript
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 继续添加切换环境代码

TypeScript
// 通过脚本指令更改运行时加载的环境变量文件
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: 生产环境
JSON
{
"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文件测试

TypeScript
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 掘金