목차
태그
#NESTJS
#NEST
#ENV
[NestJS] ENV 설정하기
2023년 11월 30일 10:51

! 읽기 전
이 시리즈에 있는 모든 글은 블로그 지향 기반 개발 & 공식 문서 기반으로 작성되었습니다 내용은 정확하지 않을 수도 있으며, 100% 신뢰하지 마시길 바랍니다
ENV 파일 세팅하기
1. 패키지 다운로드
pnpm install @nest/config cross-env
2. 설정 적용
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: `.${process.env.NODE_ENV}.env`,
})
],
controllers: [],
providers: [],
})
export class AppModule {}
- 옵션
envFilePath
- 응용 프로그램에서 env 파일을 찾습니다
- 경로를 지정하려면 파일경로를 입력합니다
- 여러개도 설정할 수 있습니다 (
envFilePath: ['.env.development.local', '.env.development'],
)
ignoreEnvFile
- boolean 타입으로 설정합니다
- 다른 환경에서 보여질지 안보여질지 설정합니다
isGlobal
- boolean 타입으로 설정합니다
- 전역으로 설정할지 선택합니다
3. 실행 커멘드 바꾸기 (package.json)
{
// ...
"scripts": {
// ...
"start:dev": "cross-env NODE_ENV=local nest start --watch",
"start:prod": "cross-env NODE_ENV=dev node dist/main",
// ...
},
"dependencies": {
// ...
},
"devDependencies": {
// ...
}
4. env 파일 설정
.local.env (root 하위에 위치합니다)
MY_NAME=hannahLocal
.dev.env (root 하위에 위치합니다)
MY_NAME=hannahDev
5. 눈으로 확인해보기
controller.ts
@Controller('app')
export class AppController {
@Get('/env')
getHello(): string {
return process.env.NODE_ENV;
}
@Get('/name')
getName(): string {
return process.env.MY_NAME;
}
}
실행
pnpm start:dev
// or
pnpm start:prod
확인해보면 각각의 프로필과 이름이 나옵니다
- https://docs.nestjs.com/techniques/configuration
- 여기에 더 다양한 env 사용 방법이 나와있습니다 (개인적으로 저렇게 사용하는게 편해서 저렇게 사용했어요)
TypeORM - ENV 설정하기
사실 별거 없다…
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: `.${process.env.NODE_ENV}.env`,
ignoreEnvFile: false,
}),
TypeOrmModule.forRoot({
type: 'mariadb',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT),
username: process.env.USERNAME,
password: process.env.PASSWORD,
database: process.env.DATABASE,
logging: process.env.LOGGING === 'true',
entities: [process.env.ENTITIES],
synchronize: process.env.SYNCHRONIZE === 'true',
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
이렇게만 설정해주면 됩니다.