애플리케이션 실행을 한 환경이 아닌 다른 환경에서도 실행되는데 이 때 다른 구성을 설정해야한다. 그래서 사용되는 것이 구성변수다.(환경변수)
Node.js에선 .env파일에 각 환경을 만드는 파일을 만드는데 Nest에선 ConfigModule
에서 ConfigService
를 사용한다.
우선 @nestjs/config
을 설치해야한다.
npm i --save @nestjs/config
설치된 모듈은 Nest에서 모듈 파일에 들어가 사용하는 모듈에 적어주고
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule.forRoot()],
})
export class AppModule {}
.env
파일을 만들어서 변수를 지정해주면된다.
DATABASE_USER="test"
DATABASE_PASSWORD=test
이후 일반 env파일은 사용할 파일에서 process를 받아오면 된다.
import { env } from 'process';
.env
파일은 루트 디렉터리 파일에 저장하는데 다른 경로에 저장하고 싶다면 파일 경로를 따로 설정해줘야한다. 아직 필요성은 못느끼겠다.
ConfigModule.forRoot({
envFilePath: ['.env.development.local', '.env.development'],
});
Use module globally파트고
ConfigModule.forRoot({
isGlobal: true,
});
isGlobal
옵션을 사용해서 true로 설정해준다면 import할 필요가 없어진다.