반응형
보통 프로그래밍을 할 때 노출되면 위험한 민감한 정보들은. env 파일에 담아두고 사용하게 된다. 이렇게 환경변수로 담아두고 사용하게 되면 테스트 환경이나 개발 환경, 배포 환경으로 나눠서 사용할 수 있다. nestjs에서도 상황에 맞게 가져와 사용할 수 있게끔 라이브러리 @nestjs/config를 제공한다.
@nestjs/config 설치
npm install @nestjs/config
ConfigModule Root module에 등록하기
configMoudle을 사용하기 위해선 Root module에 등록하고, 이때 isGlobal 옵션을 true로 설정하면 하위에 있는 모든 모듈에서 쉽게 주입받아 사용이 가능하다. 만약 옵션은 false로 지정하면 매번 다른 모듈에서 imports에 등록해줘야 한다.
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
],
controllers: [AppController],
providers: [AppService],
})
ConfigModule 다른 module에서 가져다 사용하기
만약 Root module에 등록된 ConfigModule을 다른 module에서 가져다 사용하려면 아래처럼 생성자로 주입받아 사용하면 된다.
@Controller()
export class TestController {
constructor(
private configService: ConfigService,
) {}
@Get()
getHello() {
console.log(this.configService.get('ENV변수명'));
return
}
}
@nestjs/config 설정 옵션들
isGlobal은 위에서 말했던 것처럼 루트에 한 번 설정해 놓고 다른 하위 모듈에서 주입받아 사용할 것인지를 확인하는 옵션임.
validationSchema는 말 그대로 .env에서 넘어오는 환경변수들에 대한 validation을 진행할 수 있다.
cache?: boolean;
isGlobal?: boolean;
ignoreEnvFile?: boolean;
ignoreEnvVars?: boolean;
envFilePath?: string | string[];
encoding?: string;
validate?: (config: Record<string, any>) => Record<string, any>;
validationSchema?: any;
validationOptions?: Record<string, any>;
load?: Array<ConfigFactory>;
expandVariables?: boolean | DotenvExpandOptions;
솔직히 별 생각없이 세팅되어 있는 대로 사용했었는데 옵션활용해서 좀 더 편하게 세팅할 수 있을 것 같다.
반응형
'NestJS' 카테고리의 다른 글
Express에서 DI 프레임워크 만들어보기 (0) | 2023.05.04 |
---|---|
Nest.js에서 모듈간의 의존성 관리하기 (0) | 2023.04.19 |
AuthGuard 예외처리 조건 만들기 (0) | 2023.04.19 |
Nest.js 에서 역직렬화 하기 (0) | 2023.03.14 |
Nest.js custom decorator 사용하기 (0) | 2023.03.07 |