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’,
}));
주요 차이점 및 특징
- forRoot() vs forFeature()
-
forRoot(): 전역 설정용
-
forFeature(): 특정 모듈/기능용
- 일반 export vs registerAs()
-
일반 export: 직접적인 설정 객체
-
registerAs(): 네임스페이스로 그룹화된 설정
- 환경변수 활용
-
데이터베이스 연결 정보를 환경변수로 관리
-
개발/운영 환경 분리 가능
이런 방식으로 NestJS에서 설정을 체계적으로 관리할 수 있으며, 특히 registerAs()를 사용하면 설정을 논리적으로 그룹화하여 더 깔끔하게 관리할 수 있습니다.