NestJS Yaml 파일 설정 관리

그동안 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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유