Webpack собирает то, что вы подключаете. Есть пара советов:
1. Подключать аккуратно (например, вместо
import _ from lodash
, использовать
import func_name from lodash/func_name
)
Разработчики стараются оптимизировать импорт, поэтому смотрите на подобные возможности у других библиотек (
например).
2. Как вы и написали в вопросе - удалить из бандла (конечного файла скриптов) неиспользуемый код. В этом может помочь, например, uglifyJS. Он должен вырезать все неиспользуемое. Точных настроек не приведу (
список), но можете взглянуть на этот
вопрос
3. Использовать линтер, например
eslint.org/. Запустить
lint по кодовой базе и удалить все неиспользуемые (но подключенные) модули.
p.s. пока писал ответ на ваш вопрос, наткнулся еще на
webpack-bundle-size-analyzer. Сам не использовал, но возможно поможет.