Как я могу уменьшить размер пакета библиотеки, созданной с помощью NextJS/Webpack/Babel?

#javascript #reactjs #webpack #next.js #babeljs

Вопрос:

В настоящее время мое приложение работает "next": "^10.1.2", с Webpack4. На рисунке ниже у меня есть две страницы, которые импортируют разные компоненты, но, как вы можете видеть, вместо этого импортируется вся моя библиотека, которую я создал локально.

Что я ожидаю от webpack/babel, так это встряхнуть библиотеку и импортировать только тот компонент, который мне нужен. Изначально я думал, что это способ импорта/экспорта модуля, и попытался выполнить рефакторинг для импорта непосредственно из самого компонента вместо index.js файла, но поскольку в библиотеке много разных компонентов, на рефакторинг всех страниц, использующих компоненты, уйдет слишком много времени.

В index.js нем экспортируется как таковой

 ...
export { default as Card } from './card';
export { default as Carousel } from './carousel';
export { default as Checkbox } from './checkbox';
... 

Кроме того, я пробовал импортировать вавилонский плагин, но, похоже, ничего не помогает уменьшить. Я также пытался рассмотреть возможность обновления до использования webpack5, но для его обновления потребуется некоторое время, потому что произошла какая-то ошибка.

Обратиться сюда, чтобы узнать, сталкивался ли кто-нибудь с этим раньше и нашел ли какое-либо решение этой проблемы?

Скриншот

скриншот анализатора скриншот анализатора

EDIT: Just an update on something else that I have missed out is that these are all server side rendered through a custom server. Not too sure if that extra bit of information is useful or not. I was reading up on NextJS custom server and it said that it does not go through babel/webpack. Is that the reason why it doesn’t tree shake?