위의 이유로 환경변수의 사용이 필요하고, dotenv는 .env
라는 외부 파일에 중요한 정보를 환경변수로 저장하여 정보를 관리할 수 있게 해준다.
dotenv란 .env 파일에 선언한 변수를 process.env에 로드해주는 무의존성 모듈이다.
다시말해 .env
파일을 통해 환경변수를 설정해주는 패키지이다.
path
를 통해 .env
파일의 절대 경로를 찾고, fs
모듈을 통해 .env``파일을 물리적으로 읽어들여
process.env```에 key-value 형식으로 담는다.
npm install dotenv
const dotenv = require('dotenv');
// dotenv.config() 내에 아무것도 명시해주지 않으면 루트에 있는 .env 파일을 찾아 적용한다.
dotenv.config({
path: './env/local.env'
});
// .env 파일 예시
FIREBASE_API_KEY=TEST_KEY
FIREBASE_AUTH_DOMAIN=test.firebaseapp.com
FIREBASE_PROJECT_ID=test
process.env
를 정의해준다.webpack.DefinePlugin : 모든 자바스크립트 코드에서 접근이 가능한 전역 변수를 선언하기 위해서 사용되는 플러그인이다.
module.exports = {
...
plugins: [
new webpack.DefinePlugin({
"process.env": JSON.stringify(process.env),
}),
]
}
process.env.xxx
로 사용하면 됨# .env #
FOO=foo
/* example.js */
console.log(process.env.FOO); // -> console.log('foo');
// or
if (process.env.FOO === "foo") {
console.log("FOO!");
}
cf. create-react-app
에서 환경변수 사용하는 경우
create-react-app
에는 이미 dotenv 패키지가 내장되어 있다.
따라서 별도의 패키지 추가나 Webpack에 대한 설정 없이 .env
파일을 생성해서 변수를 선언하는 것만으로도 환경변수를 사용할 수 있다.
하지만 내부적으로 REACT_APP_
으로 시작하는 환경변수만 읽어들이도록 설정을 해두었기 때문에 변수명은 반드시 REACT_APP_
으로 시작해야 한다!