개발/NestJs
3. 외부환경파일
희묭
2023. 10. 20. 11:46
3. 외부환경파일
1) 설치
- @nestjs/config : 설정 파일을 외부에서 가져오기 위한 nestjs에서 제공되는 모듈
- cross-env : os에 종속되지 않고, 플랫폼 표준화를 하기위해 필요한 라이브러리
- joi : 형식에 대한 유효성 검사
아래와같이 설치한다
yarn add @nestjs/config
yarn add cross-env
yarn add joi
2) cross-env로 환경변수 주입
package.json에 cross-env NODE_ENV=실행환경 추가
"start:dev": "cross-env NODE_ENV=dev nest start --watch",
"start:prod": "cross-env NODE_ENV=prod node dist/main",
3) @nestjs/config로 환경변수 호출
app.module.ts 에 config모듈을 import
validationSchema 를 통해 문법을 검사
import { ConfigModule } from '@nestjs/config';
import * as Joi from 'joi';
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: process.env.NODE_ENV === 'dev' ? '.env.dev' : '.env.test',
ignoreEnvFile: process.env.NODE_ENV === 'prod',
validationSchema: Joi.object({
NODE_ENV: Joi.string().valid('dev', 'prod').required(),
DB_HOST: Joi.string().required(),
DB_PORT: Joi.string().required(),
DB_USERNAME: Joi.string().required(),
DB_PASSWORD: Joi.string().required(),
DB_SID: Joi.string().required(),
}),
}),
]
최상위 디렉토리에 .env.dev 파일생성
DB_HOST=IP
DB_PORT=포트
DB_USERNAME=계정
DB_PASSWORD=비밀번호
DB_SID=sid
4) 생성한 환경설정 적용
예제로 데이터베이스 설정 항목들을 외부환경설정에거 가져옴
TypeOrmModule.forRoot({
type: 'oracle',
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
sid: process.env.DB_SID,
entities: [cm_dsplist_act, CtCtlproc, AiFlashcd],
synchronize: false,
// logging: true,
})