SWC minify

February 21, 2024

IE 대응을 위해 트랜스파일링(transpiling)뿐만 아니라 polyfill 코드까지 추가하니 빌드 용량이 크게 증가했습니다. 현재 작업중인 SDK 같은 파일은 외부에서 주기적으로 로드되기 때문에 용량 증가가 부담이 되었습니다.

이에 따라 IE에서 문제가 되는 코드만 직접 처리하여 polyfill 사용을 최소화하고, SWC의 minify 옵션을 사용해 추가적인 경량화를 진행했습니다.

그런데 여기서 의문이 들었습니다.

"경량화되면 무조건 좋은 거 아닌가? 그런데 왜 minify 옵션이 기본적으로 활성화되어 있지 않고, 별도 설정이 필요할까?"

SWC에서 minify 옵션이 따로 존재하는 이유

SWC에서 minify 옵션을 활성화하면 코드가 최적화되면서 용량이 줄어들지만, 몇 가지 고려해야 할 사항이 있습니다.

  1. 빌드 시간이 증가

    minify 옵션을 활성화하면 추가적인 최적화 과정이 필요해서 개발 중에는 minify를 비활성화하여 빠른 빌드를 유지하고 배포 단계에서만 활성화하는 것이 일반적입니다.

  2. 디버깅이 어려워짐

    변수이름이 단순화되고 코드가 한 줄로 압축되기에 원본 코드의 위치를 추적하기 어려워지는 단점이 있습니다.

  3. 개발자마다 프로젝트에 요구하는 경량화가 다름

    변수 이름을 축약하길 원할 수 있지만, 주석을 제거하는 것에 더 관심이 있을 수 있습니다.

파일 크기를 줄이는 것은 분명한 장점이지만, 개발 과정의 다양한 단계와 요구 사항을 고려할 때 유연성 있게 따로 옵션으로 존재하고 있었습니다.