반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- NavigationLink
- Creating Operators
- operator
- nonisolated
- RFC1738/1808
- swift6
- Operators
- typeorm
- RxCocoa
- SWIFT
- subject
- URL(string:)
- IOS
- nestjs
- dismiss
- vim
- init?
- ios14
- Operater
- init
- @State
- SwiftUI
- @Binding
- Xcode
- Bug
- NullObject
- RxSwift
- @EnvironmentObject
- @Environment
- graphql
Archives
- Today
- Total
Tunko Development Diary
[NestJS] Configuration 환경변수 설정 [@nestjs/config, cross-env, joi] 본문
Development/Nest.js
[NestJS] Configuration 환경변수 설정 [@nestjs/config, cross-env, joi]
Tunko 2021. 4. 10. 19:07설치
터미널에서 Nestjs 에서 제공하는 config 패키지 설치
npm i --save @nestjs/config
환경 변수 파일을 조건에 따라 읽기 위한 패키지 설치
npm i cross-env
환경변수 유효성 검사를 위한 패키지 설치
npm i joi
프로젝트 최상단에 파일 생성
.env.dev
.env.test
package.json 파일 해당라인 수정
- cross-env 패키지를 이용해 환경변수를 할당한뒤 nest start 명령을 실행한다.
// 수정전
"start:dev": "nest start --watch",
"start:prod": "node dist/main",
// 수정후
"start:dev": "cross-env NODE\_ENV=dev nest start --watch",
"start:prod": "cross-env NODE\_ENV=prod node dist/main",
- ignoreEnvFile : 설정은 프로젝트 배포시엔 환경파일 .env 을 넘기지 않도록 하는 설정이다.
- validationSchema : Joi 를 이용해 package.json 에서 설정한 NODE_ENV 에 설정한 환경변수가 유효한지 검사한다. (‘dev’ or ‘prod’) 검사
- Joi 옵션중 하나인 required는 필수요소이다. 누락되면 안됨을 의미함.
- NOED_ENV 는 package.json 에서 명령어로 설정
- DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_NAME 은 .env 파일에 설정되어있다.
import { ConfigModule } from '@nestjs/config';
@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({
NOED_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(),
}),
]
...
.gitignore 에 추가
.env.dev
.env.test
.env 파일 내용 설정
DB_HOST=localhost
DB_PORT=0000
DB_USERNAME=xxxxx
DB_PASSWORD=xxxxx
DB_NAME=xxxxx
app.module.ts 설정
import * as Joi from 'joi'
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: true,
logging: true,
entities: [],
}),
반응형
'Development > Nest.js' 카테고리의 다른 글
[NestJS][GraphQL] mapped-types 정리 (2) | 2021.04.14 |
---|---|
[NestJS] [TypeOrm] Active Record 패턴vs Data Mapper 패턴 (0) | 2021.04.13 |
[Nest.js][GraphQL] 기반 postgres DB 설치 (0) | 2021.04.10 |
[nest.js/graphql] 설치 및 세팅 (0) | 2021.04.10 |
[Nast.js] 애플리케이션 프로젝트 생성 (0) | 2021.04.10 |
Comments