Backend(Framework)/NestJS

NestJS Yaml 파일 설정 관리

Tech강인플루언서 2023. 12. 2. 02:51

그동안 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설정 방법에 대해 간단하게 설명하도록 하겠습니다.