Home 환경변수 깔끔하게 관리하기
Post
Cancel

환경변수 깔끔하게 관리하기

환경변수 깔끔하게 관리하기

🎊 시작하기 전에…

현재 내가 사용하기에 가장 깔끔하다고 생각되는 방법이다.

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,
    ...
  })
]
...

위와 같이 구조분해 문법을 활용하여 사용하면 된다.

This post is licensed under CC BY 4.0 by the author.