나무를 흔들어 잔가지를 털어내듯 불필요한 코드를 제거하는 것
// 좋지 않은 예시
import React from 'react'
// 좋은 예시
import { useState, useEffect } from 'react'
이 때, require는 export되는 모든 모듈을 불러오기 때문에,
상단에서 필요한 문법만 import하는 것이 소용이 없어짐
이를 방지하기 위해선?
=> Balbelre 파일 작성
//Barbelre 파일
{
“presets”: [
[
“@babel/preset-env”,
{
"modules": false
}
]
]
}
사이드 이펙트를 일으키는 코드는,
웹팩이 트리쉐이킹 대상에서 제외시킴
따라서 package.json파일에서 코드를 제외시켜도 됨을
웹팩에게 알려서 불필요한 코드 제외
// package.json
{
"name": "tree-shaking",
"version": "1.0.0",
// 어플리케이션 전체에서 사이드 이펙트가 발생하지 않을 것
"sideEffects": false
// 혹은 아래와 같이 작성
// 특정 파일 내에서 사이드 이펙트가 발생하지 않을 것
"sideEffects": ["./src/components/NoSideEffect.js"]
}