나무를 흔들어 잔가지를 털어내듯 불필요한 코드를 제거하는 최적화 작업
import
, export
를 사용하는 모듈)// 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'
webpack 공식 문서를 확인해보면 tree shaking 설정을 위해 해 줘야 되는 행동은 4가지가 있습니다.
// 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>
);
}
Babel은 JavaScript 문법을 구 버전 브라우저에서도 호환이 가능하도록 ES5 문법으로 변환해주는 라이브러리로써, 웹 어플리케이션에 꼭 필요한 필수 도구입니다. 단, 트랜스파일링 진행 시 사용되는 babel-preset-env 패키지 사용 시 es6 문법을 자동으로 commonjs 변환해서 트리쉐이킹 처리를 불가능하게 됩니다.
이를 방지하기 위해서 .babelrc
에서 commonjs
로 변환하지 못하도록 설정을 추가해 줘야 합니다.
{
"presets": [
["env", {
"modules": false
}]
]
}
// modules 값을 false로 설정하면 ES5 문법으로 변환하는 것을 막고,
// 반대로 true로 설정하면 항상 ES5 문법으로 변환한다.