dotenv 공식문서 해석

이제우·2023년 11월 20일
0

dotenv


dotenv는 의존성이 없는(zero-dependency) 모듈로, 환경변수를 .env 파일의 process.env.로 불러올 수 있다. 설정에 관한 정보를 코드와 분리하여 환경에 저장하는 것은 The Twelve-Factor App 방법론을 기반으로 한다.

zero-dependency
라이브러리나 프로그램이 다른 프레임워크나 라이브러리등의 설치 없이 독립적으로 작동할 수 있다.

🌱 Install


# 로컬 설치 (추천)
npm install dotenv --save

혹은 yarn으로 설치 시 yarn add dotenv

🏗️ Usage


당신의 프로젝트 root 위치에 .evn 파일을 생성하세요.

S3_BUCKET="YOURS3BUCKET"
SECRET_KEY="YOURSECRETKEYGOESHERE"

가능한 최상단에 dotenv를 가져와서 설정해주세요.

require('dotenv').config()
console.log(process.env) // 작동을 확인한 후 제거해주세요.

또는 ES6를 사용시?

import 'dotenv/config'

이게 끝입니다. process.env에는 이제 당신의 .env 파일에서 당신이 정의한 key와 value를 가집니다.

require('dotenv').config()

...

s3.getBucketCors({Bucket: process.env.S3_BUCKET}, function(err, data) {})

여러줄의 values

만약 당신이 사적인 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.을 확인하세요.


예시_ express

examples/dotenv-express

dotenv를 ExpressJS에서 사용할 때의 예시입니다.

npm install
node index.js
profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글