dotenv는 의존성이 없는(zero-dependency) 모듈로, 환경변수를 .env 파일의 process.env.로 불러올 수 있다. 설정에 관한 정보를 코드와 분리하여 환경에 저장하는 것은 The Twelve-Factor App 방법론을 기반으로 한다.
zero-dependency
라이브러리나 프로그램이 다른 프레임워크나 라이브러리등의 설치 없이 독립적으로 작동할 수 있다.
# 로컬 설치 (추천)
npm install dotenv --save
혹은 yarn으로 설치 시 yarn add dotenv
당신의 프로젝트 root 위치에 .evn 파일을 생성하세요.
S3_BUCKET="YOURS3BUCKET"
SECRET_KEY="YOURSECRETKEYGOESHERE"
가능한 최상단에 dotenv를 가져와서 설정해주세요.
require('dotenv').config()
console.log(process.env) // 작동을 확인한 후 제거해주세요.
import 'dotenv/config'
이게 끝입니다. process.env에는 이제 당신의 .env 파일에서 당신이 정의한 key와 value를 가집니다.
require('dotenv').config()
...
s3.getBucketCors({Bucket: process.env.S3_BUCKET}, function(err, data) {})
만약 당신이 사적인 keys 같은 여러줄의 변수가 필요하다면, 15.0.0 버전부터 줄바꿈을 지원합니다.
PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
...
Kh9NV...
...
-----END RSA PRIVATE KEY-----"
또는 쌍따옴표와 \n을 사용할 수 있습니다.
PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n"
주석은 당신의 파일안에 자체 라인이나 한줄 중에 추가할 수 있습니다.
# 이것은 주석입니다.
SECRET_KEY=YOURSECRETKEYGOESHERE # 주석
SECRET_HASH="something-with-a-#-hash"
주석은 #으로부터 시작하므로 당신의 값에 #이 포함되어 있다면 쌍따옴표로 감싸 주세요.
이것은 15.0.0 버전부터 변경되었습니다.
환경 변수를 포함하는 파일의 내용을 구문 분석하는 엔진을 사용할 수 있습니다. 이것은 문자열 또는 버퍼를 입력으로 받아들이고 구문 분석된 key와 value로 이루어진 object를 반환합니다.
const dotenv = require('dotenv')
const buf = Buffer.from('BASIC=basic')
const config = dotenv.parse(buf) // object가 반환될 것입니다.
console.log(typeof config, config) // object { BASIC : 'basic' }
당신은 --require (-r)
명령를 사용하여 dotenv를 사전 준비할 수 있습니다.
이로 인해 당신은 당신의 어플리케이션 코드에서 dotenv를 require하고 불러올 필요가 없습니다.
$ node -r dotenv/config your_script.js
아래의 구성 옵션은 dotenv_config_<option>=value
형식의 명령 줄 인수로 지원됩니다.
$ node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env dotenv_config_debug=true
또한, 환경 변수를 사용하여 구성 옵션을 설정할 수 있습니다. 이때는 명령 줄 인수가 환경변수보다 우선되어야 합니다.
$ DOTENV_CONFIG_<OPTION>=value node -r dotenv/config your_script.js
$ DOTENV_CONFIG_ENCODING=latin1 DOTENV_CONFIG_DEBUG=true node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env
어떤 변수에 값에 다른 변수의 값을 참조해야 합니까? dotenv-expand를 사용하세요.
.env 파일은 기기와 환경 또는 팀 멤버 사이에서 동기화 해야 하나요? dotenv-vault를 사용하세요.
다양한 환경에서 비밀을 관리하고 필요에 따라 적용해야 합니까? DOTENV_KEY
와 함께 .env.vault
파일을 사용하세요.
클라우드에 구애받지 않고 독립적으로 비밀을 배포하고 싶나요? .env.vault
을 사용하세요.
deploying .env.vault files.을 확인하세요.
dotenv를 ExpressJS에서 사용할 때의 예시입니다.
npm install
node index.js