나무를 흔들어 잔가지를 털어내듯 불필요한 코드를 제거하는 최적화 작업

// Import all the array utilities!
import arrayUtils from 'array-utils'

// import 문을 사용하여 ES6 모듈의 특정 부분만을 가져오는 방법을 사용
// Import only some of the utilities!
import { unique, implode, explode } from 'array-utils'

Tree Shaking 설정

webpack 공식 문서를 확인해보면 tree shaking 설정을 위해 해 줘야 되는 행동은 4가지가 있습니다.

React Tree Shaking

내보낼 모듈에 대해서는 export 하기

// TreeShaking
export { default as Test1 } from './Test1';
export { default as Test2 } from './Test2';

// App.tsx
import * as TreeShaking from './TreeShaking';
import { Test1 } from './TreeShaking';
// Test1만 사용할 경우라도 tree shaking 처리해줌.

function App() {
  return (
    <div>
      {/* <TreeShaking.Test1></TreeShaking.Test1> */}
      <Test1></Test1>
    </div>
  );
}

Babelrc 파일 설정하기

Babel은 JavaScript 문법을 구 버전 브라우저에서도 호환이 가능하도록 ES5 문법으로 변환해주는 라이브러리로써, 웹 어플리케이션에 꼭 필요한 필수 도구입니다. 단, 트랜스파일링 진행 시 사용되는 babel-preset-env 패키지 사용 시 es6 문법을 자동으로 commonjs 변환해서 트리쉐이킹 처리를 불가능하게 됩니다.

이를 방지하기 위해서 .babelrc에서 commonjs로 변환하지 못하도록 설정을 추가해 줘야 합니다.

{
  "presets": [
    ["env", {
      "modules": false
    }]
  ]
}

// modules 값을 false로 설정하면 ES5 문법으로 변환하는 것을 막고,
// 반대로 true로 설정하면 항상 ES5 문법으로 변환한다.