환경변수 깔끔하게 관리하기
🎊 시작하기 전에…
현재 내가 사용하기에 가장 깔끔하다고 생각되는 방법이다.
TypeORM과 같은 라이브러리에 변수를 넘겨야하는 상황을 가정하고 작성하였다.
마지막으로, @nestjs/config
를 사용하지 않고, dotenv
만을 사용하였다.
1️⃣ 첫 번째로
환경변수에서 가져오는 값을 Service의 instance에 복사한다.
environment/index.ts
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
32
33
34
35
36
37
38
import * as dotenv from 'dotenv';
dotenv.config();
//environment
const NODE_ENV: string = process.env.NODE_ENV || 'development';
//mysql
const MYSQL_HOST: string = process.env.MYSQL_HOST || 'localhost';
const MYSQL_PORT: number = Number(process.env.MYSQL_PORT) || 3306;
const MYSQL_USER: string = process.env.MYSQL_USER || 'root';
const MYSQL_PASS: string = process.env.MYSQL_PASS || '1234';
const MYSQL_DB: string = process.env.MYSQL_DB || 'entrance';
const enviornment = {
development: {
type: 'mysql',
host: MYSQL_HOST,
port: MYSQL_PORT,
username: MYSQL_USER,
password: MYSQL_PASS,
database: MYSQL_DB,
synchronize: true,
logging: true,
},
production: {
type: 'mysql',
host: MYSQL_HOST,
port: MYSQL_PORT,
username: MYSQL_USER,
password: MYSQL_PASS,
database: MYSQL_DB,
},
};
const TYPEORM = enviornment[NODE_ENV];
export { NODE_ENV, TYPEORM };
위와 같이 파일에서 env값을 가져와서 변수에 저장하고, export한다.
2️⃣ 두 번째로
TypeOrmModule에 config할 때
1
2
3
4
5
6
7
8
...
imports: [
TypeOrmModule.forRoot({
...TYPEORM,
...
})
]
...
위와 같이 구조분해 문법을 활용하여 사용하면 된다.