NPM 패키지 번들 사이즈 최적화

프로젝트
프로젝트
카테고리
Dev
작성일
2024-09-25
태그
React
작성자
꾸생
상태
공개

📦 번들 사이즈 확인

패키지 번들 사이즈를 확인하는 방법은 여러가지 있는데, NPM에 배포된 패키지라면 번들 포비아에서 쉽게 확인할 수 있다.
 
notion image
내가 배포한 kku-ui 번들 구성요소 중 가장 큰 사이즈로 잡혀있는 녀석이 lodash다.
트리 쉐이킹을 위해 lodash-es를 사용해야 한다고 알고 있음에도 lodash를 사용했는지 의문이다.

🌲 트리쉐이킹(Tree Shaking)

notion image
 
사용하는 곳은 uniqueId 함수 하나인데, 당장 lodash-es로 교체하고 다시 확인해보자.

📌 Before

// src/util/lodashUtil.ts import { uniqueId } from 'lodash'; export default { uniqueId };

📌 After

// src/util/lodashUtil.ts import { uniqueId } from 'lodash-es'; export default { uniqueId };

✨ 최적화 결과

notion image
lodash-es 패키지로 트리 쉐이킹을 적용한 결과 번들 사이즈는 89.1KB 에서 65.6KB로 26% 감소했다. 그래도 구성에서 lodash-es가 많은 부분을 차지하고 있는데, 사용하는 함수가 하나뿐인데 저렇게 많이 차지해도 되나 싶기도 하다. 시간이 지나 다른 함수도 사용할 가능성이 있어 일단 트리쉐이킹 적용에 의미를 둬본다.

번외

notion image
notion image
lodash-es 다음으로 react-dom에서 많은 용량을 차지하고 있어 찾아봤다.
팝업을 띄울 때, reactcreateRoot 함수를 사용해서 그랬다.
notion image
팝업 띄우는 방식을 리팩토링 하니 코드 양도 줄고 패키지 사이즈도 줄었다 👍