티스토리 뷰
[nestjs] 4. nestjs환경에서 설정파일 config로 빼기(Joi, config, cross-env)
개발자 고포고 2021. 11. 15. 01:04[nestjs] 4. nestjs환경에서 설정파일 config로 빼기(Joi, config)
cross-env와 joi를 활용하여 기존 설정파일을 외부로 빼었다.
[cross-env]
os에 종속되지 않고, 플랫폼 표준화를 하기위해 필요한 라이브러리
[joi]
형식에 대한 유효성 검사를 한다.
[@nestjs/config]
설정 파일을 외부에서 가져오기 위한 nestjs에서 제공되는 모듈
[설치]
$ npm install @nestjs/config cross-env Joi
[구현]
.env.dev 파일과 .env.prod 파일을 생성하여 외부 config파일을 추가하여 데이터베이스 설정을 개발환경과 배포환경으로 분리하였다. 또한 TypeORM의 자동 생성은 안정성을 위하여 개발환경에서만 진행하게하였다.
[app.module.ts]
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TestModule } from './test/test.module';
import { Photo } from './test/entities/photo.entity';
import { ConfigModule } from '@nestjs/config';
import * as Joi from 'joi';
@Module({
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_NAME: Joi.string().required(),
}),
}),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
synchronize: process.env.NODE_ENV !== 'prod',
logging: true,
entities: [Photo],
}),
TestModule,
],
})
export class AppModule {}
[.env.dev]
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=1
DB_NAME=testApi
자세한 내용은 commit history를 통하여 확인이 가능하다.
[github commit]
https://github.com/gofogo2/nest-js-api/commit/2137b3a398c670ea2058facccabbc7c6e9cddd4e
[github code]
https://github.com/gofogo2/nest-js-api.git
#nestjs #typescript #javascript #js #ts #api #controller #service #typeorm #database #mysql #postgres #sql #nestjs to db #crud #get #put #post #delete #api #api기본적인 로직 #config #cross-env #joi #jestjs/config
'nest api 서버 개발 프로젝트' 카테고리의 다른 글
[nestjs/swagger] nestjs에서 간단하게 swagger를 활용한 document(문서) 자동화 [설치] 1/3 (0) | 2021.11.18 |
---|---|
[nestjs] 5. api를 위한 기본 구성 추가 싸이클(db/controller/module/service) (0) | 2021.11.15 |
[nestjs] 3. nestjs 환경에서 기본적인 CRUD(Create Read Update Delete) 완성하기 (0) | 2021.11.14 |
[nestjs] 2. nestjs환경에 typeorm을 적용하여 데이터베이스 연결하기 (0) | 2021.11.14 |
[nestjs] 1. testController / testService 생성 및 helloworld (0) | 2021.11.14 |