그동안 Express Node 서버 프로젝트에서는 설정값들을 env파일을 통하여 관리 하였습니다.
테크팀은 NestJS 프로젝트에서는 통일성을 위하여 스프링 프로젝트들과 동일하게 yaml파일을 통하여 설정값들을 관리하고 싶었고, 다행히도 NestJS 프레임워크에서는 프레임워크에서 기본적으로 지원 및 자세한 내용을 공식문서에서 설명해주고 있었습니다.
"dependencies": {
"@nestjs/config": "^3.1.1",
"js-yaml": "^4.1.0",
},
"devDependencies": {
"@types/js-yaml": "^4.0.9",
},
package.json에 다음을 추가하고 패키지를 설치하자.
그리고 다음과 같이 resources 폴더에 개발 및 운영용 yaml 설정 파일을 생성 하였습니다.
const YAML_CONFIG_FILENAME =
'config.' +
(process.env.NODE_ENV ? process.env.NODE_ENV : 'production') +
'.yaml';
export default () => {
return yaml.load(
readFileSync(
join(__dirname, '..', '../', 'resources', YAML_CONFIG_FILENAME),
'utf8',
),
) as Record<string, any>;
};
imports: [
// Module에 Yaml Config값 설정
ConfigModule.forRoot({
load: [yamlConfiguration],
cache: true,
isGlobal: true,
}),
]
js-yaml 모듈을 이용하여 yaml파일을 읽고 해당 객체를 ConfigModule에 등록합니다.
constructor(
private configService: ConfigService,
) {}
const testKey = this.configService.get<string>('test-key');
ConfigService를 주입받은 후 get함수를 사용하여 설정값을 가져오면 됩니다.
이상 Yaml 파일 설정 관리에 대한 글을 마치며, 다음글에서는 cors와 cookie설정 방법에 대해 간단하게 설명하도록 하겠습니다.
'Backend(Framework) > NestJS' 카테고리의 다른 글
NestJS Health Check (1) | 2023.12.02 |
---|---|
NestJS Cors와 Cookie설정 (0) | 2023.12.02 |
NestJS 스웨거(Swagger) 설정 (1) | 2023.12.02 |
NestJS 로깅(logging) 처리 (0) | 2023.12.02 |
NestJS 요청 생명 주기(NestJS Request LifeCycle) (0) | 2023.11.30 |