Tree Shaking이란?

Kim Young Jae·2024년 10월 20일
0

트리 쉐이킹 (Tree Shaking)

트리 쉐이킹은 사용되지 않는 코드를 제거하여 최종 번들 크기를 줄이는 기법입니다. 주로 모듈 번들러(예: Webpack, Rollup)와 함께 사용되며, 특히 자바스크립트 환경에서 중요하게 여겨집니다. 이 문서에서는 트리 쉐이킹의 개념, 작동 방식, 이점, 주의 사항 등을 설명합니다.

1. 트리 쉐이킹의 개념

트리 쉐이킹은 프로그래밍에서 "트리" 구조를 비유적으로 사용하여, 사용되지 않는 코드를 마치 나무의 잎사귀처럼 제거하는 과정을 의미합니다. 이를 통해 애플리케이션의 번들 크기를 줄이고, 성능을 향상시킬 수 있습니다.

2. 작동 방식

트리 쉐이킹은 주로 정적 분석을 통해 이루어집니다. 모듈 번들러가 코드를 분석하여 사용되지 않는 코드의 종속성을 찾고 이를 제거합니다. 이 과정에서 중요한 요소는 다음과 같습니다:

  • ES6 모듈: 트리 쉐이킹은 주로 ES6의 importexport 구문을 사용하는 모듈에서 효과적으로 작동합니다. CommonJS 모듈 시스템에서는 트리 쉐이킹이 제한적일 수 있습니다.
  • 정적 분석: 코드가 어떻게 사용되는지를 정적으로 분석하여 실제로 사용되지 않는 부분을 식별합니다.

예시

// utils.js
export function usedFunction() {
    console.log("I am used!");
}

export function unusedFunction() {
    console.log("I am unused!");
}
// main.js
import { usedFunction } from './utils';

usedFunction(); // "I am used!" 출력

위 예시에서 unusedFunctionmain.js에서 사용되지 않기 때문에, 트리 쉐이킹을 통해 최종 번들에서 제거될 수 있습니다.

3. 이점

  • 번들 크기 감소: 사용되지 않는 코드를 제거하여 최종 번들의 크기를 줄입니다.
  • 성능 향상: 로딩 시간이 단축되고, 페이지의 초기 렌더링 성능이 개선됩니다.
  • 코드 가독성: 코드의 복잡성을 줄이고, 불필요한 부분을 제거하여 가독성을 높입니다.

4. 주의 사항

  • 라이브러리 호환성: 모든 라이브러리나 프레임워크가 트리 쉐이킹을 지원하는 것은 아닙니다. ES6 모듈을 지원하는 라이브러리를 사용하는 것이 중요합니다.
  • 동적 import: 동적으로 불러오는 코드의 경우 트리 쉐이킹이 어려울 수 있습니다. 사용 여부가 명확하지 않은 경우, 해당 코드가 번들에 남아있게 됩니다.
  • enum과의 관계: TypeScript의 enum과 같이 런타임 객체로 변환되는 코드는 트리 쉐이킹이 효과적으로 작동하지 않을 수 있습니다.

결론

트리 쉐이킹은 애플리케이션의 성능을 최적화하는 중요한 기법입니다. ES6 모듈을 활용하고, 사용되지 않는 코드를 적극적으로 제거함으로써 최종 번들의 크기를 줄이고 성능을 향상시킬 수 있습니다. 트리 쉐이킹을 올바르게 활용하면, 효율적인 애플리케이션 개발에 큰 도움이 됩니다.

profile
프론트엔드 뭐시기 주로 하는 사람

0개의 댓글