에듀테크 프로젝트 대시보드
번들러와 트리 셰이킹
<script> 태그 10개, 100개를 각각 따로 요청하면 느리다. 그래서
번들러(Webpack, Vite, esbuild, Rollup)는 진입점(entry)부터 import 그래프를
전부 따라가며 여러 모듈을 하나의 파일로 묶는다. 이때 실제로 import되어
쓰이는 함수만 남기고 한 번도 참조되지 않는 코드(dead code)를 정적 분석으로 잘라내는 것이
트리 셰이킹(Tree Shaking)이다 — 나무를 흔들어 죽은 잎만 떨어뜨리는 것에 비유한 이름.
아래 모듈에서 체크박스를 켜고 꺼 보며, 실제로 import한 함수만 번들에 남는 과정을 직접 확인해보자.
import/export는
코드 실행 전에 미리 분석 가능한 위치에만 고정적으로 등장한다.
require()는
함수 호출이라 조건문 안에서 실행 중에 어떤 값이 들어올지 바뀔 수 있다.
usedExports + sideEffects: false 표시로 셰이킹 대상 지정