NestJS Environment Config
Loading configuration for multiple environments.
app.module.ts
javascript
import {typeOrmConfigAsync} from './config/database.configuration';
@Module({
imports: [
TypeOrmModule.forRootAsync(typeOrmConfigAsync)
]
})/config/database.configuration
javascript
import { ConfigModule, ConfigService } from "@nestjs/config";
import { TypeOrmModuleAsyncOptions, TypeOrmModuleOptions } from "@nestjs/typeorm";
let envFilePath:string[] = ['.env'];
export const IS_DEV:boolean = process.env.RUNNING_ENV !== 'prod';
if (IS_DEV) {
envFilePath.unshift('.env.dev');
} else {
envFilePath.unshift('.env.prod');
}
export default class databaseConfiguration {
static getOrmConfig(configService: ConfigService): TypeOrmModuleOptions {
return {
type: 'mysql',
host: configService.get('DB_HOST'),
port: +configService.get<number>('DB_PORT'),
username: configService.get('DB_USERNAME'),
password: configService.get('DB_PASSWORD'),
database: configService.get('DB_NAME'),
autoLoadEntities: true,
synchronize: true,
};
}
}
export const typeOrmConfigAsync: TypeOrmModuleAsyncOptions = {
imports:[ConfigModule.forRoot({
envFilePath,
isGlobal: true,
})],
useFactory:async (configService:ConfigService): Promise<TypeOrmModuleOptions> => databaseConfiguration.getOrmConfig(configService),
inject:[ConfigService]
}.env
javascript
DB_PORT=3306
DB_NAME=your_db_name.env.dev
DB_HOST=your_host
DB_USERNAME=your_username
DB_PASSWORD=your_password14 Nestjs Config module to work with env files and hide your secrets from codebase