nestjs 에서 config 모듈을 지원하므로 nestjs/config를 사용하면 쉽게 .env 파일을 가져올 수 있음.
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule.forRoot()],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
그런데 여기서 원하는 것은 .env 말고, .env.local, .env.development를 가져오고 싶은 것.
때문에 envFilePath 옵션을 활용해서 NODE_ENV에 따라 파일명을 명시해줘야 함.
start:dev 할 때, .env.local을 호출 할 목적으로 NODE_ENV를 local이라 명시 해줌.
"start:dev": "NODE_ENV=local nest start --watch",
이렇게 되면 process.env.NODE_ENV를 호출 할 때, 설정한 NODE_ENV 환경변수 값이 호출됨.
다만 여기서 변수는 MAC 환경이라는건데, windows 환경에서 NODE_ENV=local을 사용하기 위해서는 cross-env를 설치해야함.
yarn add cross-env
"start:dev": "cross-env NODE_ENV=local nest start --watch",
이렇게 해줘야 NODE_ENV를 windows 환경에서도 정상 동작합니다.
다음 app.module에 envFilePath 설정
const NODE_ENV = process.env.NODE_ENV;
const envFilePath = ".env" + (NODE_ENV == "local" ? ".local" : NODE_ENV == "development" ? ".development" : "");
@Module({
imports: [ConfigModule.forRoot({ envFilePath })],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
NODE_ENV 값을 변경해가면서 실행해보면 아래와 같은 결과 나오는 것 확인할 수 있음 (단, 미리 .env에 PORT를 변경해둬야함.)
.env
PORT=4000
http://localhost:4000
.env.local
PORT=4001
http://localhost:4001
.env.development
PORT=4002
http://localhost:4002
다음엔 typeorm을 위한 config 설정 방법을 살펴보겠습니다.
현재까지 코드 보기: https://github.com/close852/nestjs-toy/tree/02
반응형
'Nodejs > NestJS' 카테고리의 다른 글
[NestJS] fastify @UploadedFile, @UploadedFiles 커스텀 만들기 05 (0) | 2024.05.27 |
---|---|
[NestJS] fastify middleware 추가하기(@fastify/multipart) 04 (0) | 2024.05.27 |
[NestJS] TypeORM(MySQL) 설정 Migration 포함 03 (0) | 2024.05.26 |
[NestJS] 프로젝트 설정 01 (0) | 2024.05.26 |
[NestJS] 시작하기 00 (0) | 2024.05.26 |