多环境配置
安装
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 掘金