JavaScript 프로젝트에서는 실행 환경에 따라 달라지는 기능이 많습니다. 이런 일은 웹팩(Webpack)의 환경 변수에 따라 죽은 코드 삭제하기 기능을 이용하면 아주 쉽게 처리할 수 있습니다..
"build:test": "webpack -p --config ./src/webpack.config.js",
"build:prod": "webpack -p --define process.env.NODE_ENV='\"production\"' --config ./src/webpack.config.js",
/**
* `prod` 와 `test` 모두에 속성을 추가해야 된다는 것을 잊지 않기 위해 인터페이스 사용
*/
interface Config {
someItem: string;
}
/**
* config 하나만 익스포트함.
*/
export let config: Config;
/**
* `process.env.NODE_ENV` 정의는 웹팩으로부터 넘어 옴
*
* 프로덕션 빌드에서 출력되는 JavaScript 에서는 `else` 블럭 전체가 삭제됨
*/
if (process.env.NODE_ENV === 'production') {
config = {
someItem: 'prod'
}
console.log('Running in prod');
} else {
config = {
someItem: 'test'
}
console.log('Running in test');
}
여기서 process.env.NODE_ENV
를 사용한 이유는 React
등 많은 JavaScript 라이브러리에서 이 변수를 사용하기 때문입니다.