- webpack
- mode : https://webpack.js.org/configuration/mode/
- minimize : https://webpack.js.org/configuration/optimization/#optimizationminimize
- terser : https://webpack.js.org/plugins/terser-webpack-plugin/
custom minimizer
$ webpack -p // 다음의 명령어와 동일하다. // webpack --optimize-minimize --define process.env.NODE_ENV="'production'"
- 참고
개요
개발 시에만 사용이 필요한 기능들(주로 디버깅, 개발편의성 용도)에 대한 코드를 컴파일 시에 제거하여 결과물에는 해당 코드가 전혀 존재하지 않도록 보장하려고 한다.
해당 코드가 제거되어야 하는 이유는 다음과 같다.
- 기본적으로 모든 소프트웨어는
리버싱(reverse engineering)
기술을 통해서 컴퓨터가 실행해야하는 코드를 해석하여 개발용으로 쓰이는 코드를 찾을 수 있고, 개발 시에 사용하는 정보는 보통 많은 정보를 포함하고 있으므로 해커에게 아주 좋은 힌트가 된다.
네이티브 코드
: 안드로이드 앱은 가상머신을 통해 실행되므로 중간코드 형태로 코드를 가지고 있고, 따라서dex
파일로 쉽게 소스코드를 디컴파일 하여 원본 소스코드와 유사하게 복원할 수 있다.
자바스크립트 코드
:
webpack-strip-block
해당 블럭 안에 명시한 코드들을
production
mode로 build 시에 제거하고 빌드해준다.webpack4 부터 built-in 되어서 mode 값에 따라 해당 기능이 수행된다고 하는데, 안된다고 주장하는 댓글들도 있어서 확인은 필요하다.