본문 바로가기
Web/Node.js

dotenv

by joooing 2021. 2. 26.
반응형

Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.

.env 환경변수 파일은 Node.js에서 프로그래밍에 필요한 값들을 관리하는 역할을 한다. 쉽게 말해 설정들을 모아두는 곳이다. .env 파일에 정의된 미리 정의된 값을 애플리케이션에서 활용하고 싶을 때 사용한다.

 

참고로 환경변수는 특정 process를 위한 key-value 형태의 변수라고 할 수 있는데, Node.js 기반이라면 process.env[key] 형태로 사용이 가능하다. (ex. process.env.NODE_ENV)

 

MacOS, Windows, Linux 등 다양한 OS가 존재하는데, OS 마다 환경변수를 설정하는 방법이 다르다. 이로 인해 문제가 발생할 수 있기 때문에 Node.js에서 몇가지 대책을 마련해 두었다. 그 중 하나가 바로 dotenv 라이브러리를 설치해서 사용하는 것이다. 이 라이브러리는 미리 작성해둔 .env 파일로 환경변수를 대신 설정해주는 기능을 가지고 있다.

 

Install

일단 .env을 사용하려면 dotenv 패키지를 설치부터 해야한다.

 

npm install dotenv
yarn add dotenv

 

Usage

설치 후 require문을 통해 패키지를 불러온다. 그리고 나서 .env 파일을 프로젝트의 root 디렉토리에 생성하면 된다.

 

require('dotenv').config()

 

.env 파일에 들어가는 내용은 key=value 형태로 써야하고, #을 붙여 주석을 쓸 수도 있다.

 

#VALUES
DB_HOST=localhost
DB_USER=root
DB_PASS=12345678

 

.env 파일 기본 위치는 root 디렉토리이지만, .config() 함수에 path를 지정해 다른 위치에 있거나 기본 이름이 다른 .env 파일을 참조할 수도 있다. (추가사항)

 

require('dotenv').config({
 path : ".env.sample"
});

 

process.env 는 .env 파일에 있는 키, 값 쌍을 가진 객체이다. 이 객체를 통해 파일에 있는 값들을 사용하면 된다.

 

const db = require('db');
db.connect({
  host: process.env.DB_HOST,
  username: process.env.DB_USER,
  password: process.env.DB_PASS
})

 

 

Example

실제로 dotenv 라이브러리를 불러오고 사용하는 모습이다. .env 파일에 있는 변수들은 애플리케이션 로직에 활용하기도 하고, 웹팩으로 빌드를 할 때 사용하기도 한다고 한다. 아래 예시는 API를 호출할 때 URL 값을 정의해두고 사용하는 모습이다.

 

// .env
LOCAL_URI=http://localhost:8080

clientId=client-test1234
clientServer=server-test1234

 

// index.js
function fetchUser() {
  return axios.get(`${LOCAL_URI}/users`);
}

 

 

참고자료

www.npmjs.com/package/dotenv

반응형

댓글