[Node.js] dotenv (npm)

Updated:

환경변수

  • 특정 process를 위한 key-value 형태의 변수
  • 환경변수에 따라 개발/운영/테스트 구분하여 관리 가능

process.env

  • Node로 실행한 앱에는 process라는 변수에 다양한 정보 존재
  • process.env
{
    ...
    TERM_PROGRAM: 'Apple_Terminal',
    GEM_HOME: '/Users/pnu/.rvm/gems/ruby-2.6.3',
    SHELL: '/bin/bash',
    TERM: 'xterm-256color',
    TERM_PROGRAM_VERSION: '433',
    MY_RUBY_HOME: '/Users/pnu/.rvm/rubies/ruby-2.6.3',
    USER: 'pnu',
    ...
}

  • 환경변수 설정
윈도우 / set NODE_ENV=test
리눅스 / export NODE_ENV=test
  • 환경변수를 이용해 상황에 따른 코드사용이 가능
if (process.env.NODE_ENV === "test") {
  env = "테스트환경";
} else if (process.env.NODE_ENV === "dev") {
  env = "개발환경";
}

dotenv

  • 별도의 파일로 운영환경에 따라 각종 정보를 관리
  • npm i dotenv
// .env
deploy_status=productionPicked

// .env.dev
deploy_status=developmentPicked
const env = require('dotenv')

env.config({ 
    path : path.resolve(
        process.cwd(),
        process.env.NODE_ENV == "production" ? ".env" : ".env.dev"
    )
});

console.log(process.env.deploy_status);

/*
set NODE_ENV=productoin
will print out 'productionPicked'

set NODE_ENV=development (or any other values execpt 'production')
will print out 'developmentPicked'
*/
  • .env 파일에 설정정보 저장
  • deployment 방식에 따라 해당하는 .env 호출

ref :
[DOC] Node.js - process
Environment Variables
dotenv
NodeJS 환경 변수 설정

Leave a comment