환경변수는 노드 자체의 Process에 저장해 두는 형식으로 중요 데이터를 담아두는 방법입니다.
Library로 지정할 것들(결제모듈, AWS, etc......)등등의 access key와 secret key, 기타 설정등을 저장할 때 사용할 수 있습니다.
기존에는 /config/... 방식으로 .json이나 .js파일등을 지정해 .json 파일의 경우는 fs모듈을 사용하여 읽어오고, js파일은 import(ES5방식은 require)을 통해 읽어들여서 사용했습니다.
하지만 노드는 훨씬 강력한 변수 저장 기능인 env를 제공합니다!
그 전에, 필요 모듈이 두가지 정도 있습니다.
바로 dotenv
와 cross-env
입니다.
npm i dotenv cross-env
// Environment.js
import dotenv from 'dotenv';
switch (process.env.NODE_ENV) {
case 'development':
dotenv.config({ path: path.resolve().concat('/.env.development') });
return;
case 'production':
dotenv.config({ path: path.resolve().concat('/.env.production') });
return;
default:
dotenv.config({ path: path.resolve().concat('/.env.local') });
return;
}
노드 프로젝트 시작 지점에 해당 파일을 import 받아서 실행해주면 알아서 .env파일을 읽어들여서 개발 환경 (위와 같은 경우는 development, production, local의 3가지로 나뉨)에 따라 process에 변수를 세팅합니다.
위의 dotenv와 함께 사용하기면 좋은 모듈입니다. 노드 실행 명령어에 NODE_ENV라는 변수를 세팅할 수 있습니다.
// package.json
{
...,
scripts: {
...,
start: 'cross-env NODE_ENV=development node ./src/www
...
},
...
}