NestJS의 Configuration 모듈 사용법과 관련된 내용들입니다. 크게 두 가지 설정 방식을 보여주고 있습니다:

1. 기본 Configuration 설정 (appConfig)

Module 설정

typescript

Apply

import { ConfigModule } from ‘@nestjs/config’;

import appConfig from ‘./config/app.config’;

// ConfigModule에 설정 파일 로드

ConfigModule.forRoot({

  load: [appConfig],

})

Configuration 파일 (app.config.ts)

typescript

Apply

export default ()  ({

  environment: process.env.NODE_ENV || ‘development’,

  database: {

    host: process.env.DATABASE_HOST,

    port: parseInt(process.env.DATABASE_PORT || ‘5432’, 10),

  },

});

TypeORM 데이터베이스 연결

typescript

Apply

type: ‘postgres’,

host: process.env.DATABASE_HOST,

port: +process.env.DATABASE_PORT!,

username: process.env.DATABASE_USER,

password: process.env.DATABASE_PASSWORD,

database: process.env.DATABASE_NAME,

2. 네임스페이스 기반 Configuration (coffeesConfig)

Module 설정

typescript

Apply

import { ConfigModule } from ‘@nestjs/config’;

import coffeesConfig from ‘./config/coffees.config’;

// 특정 기능에만 적용되는 설정

ConfigModule.forFeature(coffeesConfig),

Configuration 파일 (coffees.config.ts)

typescript

Apply

import { registerAs } from ‘@nestjs/config’;

export default registerAs(‘coffees’, ()  ({

  foo: ‘bar’,

}));

주요 차이점 및 특징

  1. forRoot() vs forFeature()
  • forRoot(): 전역 설정용

  • forFeature(): 특정 모듈/기능용

  1. 일반 export vs registerAs()
  • 일반 export: 직접적인 설정 객체

  • registerAs(): 네임스페이스로 그룹화된 설정

  1. 환경변수 활용
  • 데이터베이스 연결 정보를 환경변수로 관리

  • 개발/운영 환경 분리 가능

이런 방식으로 NestJS에서 설정을 체계적으로 관리할 수 있으며, 특히 registerAs()를 사용하면 설정을 논리적으로 그룹화하여 더 깔끔하게 관리할 수 있습니다.