불필요한 코드 제거

Tags
webpack
요약
개발 시에만 필요한 코드들 완전히 제거 키워드 : strip, minify
 

개요

개발 시에만 사용이 필요한 기능들(주로 디버깅, 개발편의성 용도)에 대한 코드를 컴파일 시에 제거하여 결과물에는 해당 코드가 전혀 존재하지 않도록 보장하려고 한다.
 
해당 코드가 제거되어야 하는 이유는 다음과 같다.
  • 기본적으로 모든 소프트웨어리버싱(reverse engineering) 기술을 통해서 컴퓨터가 실행해야하는 코드를 해석하여 개발용으로 쓰이는 코드를 찾을 수 있고, 개발 시에 사용하는 정보는 보통 많은 정보를 포함하고 있으므로 해커에게 아주 좋은 힌트가 된다.
  • 네이티브 코드 : 안드로이드 앱은 가상머신을 통해 실행되므로 중간코드 형태로 코드를 가지고 있고, 따라서 dex 파일로 쉽게 소스코드를 디컴파일 하여 원본 소스코드와 유사하게 복원할 수 있다.
  • 자바스크립트 코드 :

webpack-strip-block

해당 블럭 안에 명시한 코드들을 production mode로 build 시에 제거하고 빌드해준다.
⚠️
webpack4 부터 built-in 되어서 mode 값에 따라 해당 기능이 수행된다고 하는데, 안된다고 주장하는 댓글들도 있어서 확인은 필요하다.