Node JS 환경 변수 관리하기

shinee·2022년 6월 26일
0

NodeJS

목록 보기
5/6

프로젝트를 하며 항상 겪는 문제 중 하나가 local/dev/prd 의 환경 셋팅을 분리하는 것이다.
오늘은 Node.js에서 dotenvcross-env를 통해 환경변수를 분리 & 관리하는 방법을 적어보고자 한다.

1. dotenv 설치

dotenv는 환경변수를 파일에 저장할 수 있도록 해주는 라이브러리이다.
CommonJS이나 ESModule이냐에 따라 설정방식이 달라진다고 하는데 나는 ESModule방식을 택하고 있어서 그 부분만 소개하려고 한다.
CommonJS방식일 때 어떻게 하는지 알고 싶으면 여기를 참고하면 된다!

먼저 npm install dotenv --save를 통해 dotenv를 설치한 후 root 디렉토리 아래 .env 파일을 생성해주고 key=value 형식으로 환경변수를 입력해준다.

그리고 index.js 파일 내에 아래와 같이 셋팅해준다.

import dotenv from "dotenv";

dotenv.config();

console.log(process.env.TEST)를 찍어보면 .env 파일에 입력했던 test가 출력될 것이다.

2. cross-env 설치

환경변수를 파일을 통해 잘 관리할 수 있게 되었지만 아직 local/dev/prd 별로 다른 파일을 통해 설정은 하지 못하는 상태이다. 이를 해결하기 위해 npm install cross-env --save 로 cross-env를 설치한다.

그리고 난 후 .env파일을 분리해준다.
나는 .env.local, .env.dev, .env.prd 로 분리하였다.

package.json 파일로 가서 script부분을 다음과 같이 수정한다.

// package.json

  "scripts": {
    "start": "cross-env NODE_ENV=local nodemon --exec babel-node index.js",
    "start:dev": "cross-env NODE_ENV=dev nodemon --exec babel-node index.js",
    "start:prd": "cross-env NODE_ENV=prd nodemon --exec babel-node index.js"
  },

그리고 index.js 파일로 가서 아래 내용을 추가해준다.

import dotenv from "dotenv";

let path;

switch (process.env.NODE_ENV) {
    case "prd": path = `${__dirname}/.env.prd`;
        break;
    case "dev": path = `${__dirname}/.env.dev`;
        break;
    default: path = `${__dirname}/.env.local`;
}

dotenv.config({path: path});

이제 서버를 실행할 때
local: npm run start
dev: npm run start:dev
prd: npm run start:prd
로 실행하면 각 환경변수파일을 잘 셋팅할 것이다!!

profile
developer

0개의 댓글