개발을 진행하다보면 db나 api와 관련해서 예민한 정보들이 하드코딩되면 다른 사람들에게 노출될 수 있는 위험이 있다.
뿐만 아니라 개발이나 운영 환경에 따라 설정값이 바뀔 수 있다. 따라서 이런 설정값들은 별도의 설정 파일로 구분해 관리해줘야 한다.
윈도우에서는 기본적으로 환경변수를 지원하지 않아 모듈을 설치해야함
// node 윈도우 환경변수 모듈
npm install -g win-node-env
// config 모듈
npm install config --save
루트 디렉토리에 config파일 생성
server:
port: 3000
db:
type: 'postgres'
port: 5432
database: 'board-app'
jwt:
expiresIn: 3600
db:
host: 'localhost'
username: 'postgres'
password: 'password'
synchronize: true
jwt:
secret: 'secret'
db:
synchronize: false
그럼 이 설정값들을 어떻게 활용하는지 예시를 확인해보자.
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
import * as config from 'config'; // 설정 파일 import
// 설정파일에서 db키값만 가져옴
const dbConfig = config.get('db');
export const typeORMConfig: TypeOrmModuleOptions ={
type: dbConfig.type,
host: process.env.RDS_HOSTNAME || dbConfig.host,
port: process.env.RDS_PORT|| dbConfig.port,
username: process.env.RDS_USERNAME || dbConfig.username,
password: process.env.RDS_PASSWORD || dbConfig.password,
database: process.env.RDS_DB_NAME || dbConfig.database,
entities: [__dirname + '/../**/*.entity.{js,ts}'], // 엔티티 등록
synchronize: dbConfig.synchronize
}