FairyTaleComposer
@FairyTaleComposer

Что я делаю не так для того, чтобы удалить ненужные экспорты с помощью webpack 5?

У меня есть один модуль по типу библиотеки, то есть в нём набор функций, объектов и пара констант. Всё, что в нём есть, всё экспортируется. Есть "конечный" файл, в который импортируются только некоторые объекты и функции из первого модуля-"библиотеки".

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

Я пробовала указывать в конфиге вебпака -
optimization: {
   usedExports: true,
 },

затем в package.json - "sideEffects": false, и я так понимаю, что оба способа должны решать мою задачу. Но по отдельности они ничего вообще не делают в моём случае. И только если их совместно указать, то вебпак хотя бы обозначил неиспользуемые модули таковыми, но не удалил. И режим продакшна его не смутил.

Удаляет ли неиспользуемые экспорты вебпак 5 версии сам по себе, или для этого нужны дополнительные плагины?

Дополнительная информация:
В конфиге вебпака у меня указан mode: 'production'. Babel не использую, у меня просто ES6 модули.
Сейчас протестировала вариант с usedExports: true в режиме разработки, всё же вебпак указывает unused harmony exports сейчас и при отсутствии строчки sideEffects: false.
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
FairyTaleComposer
@FairyTaleComposer Автор вопроса
Выяснила, в чём было дело. Я на специальном полупустом проекте тестировала сборку, на маленьких модулях, буквально из пары функций\объектов, пытаясь повторить ту же ошибку. Дело было в моём коде, а не в сборке. У меня был объект, в котором содержатся ссылки на DOM-элементы. И, очевидно, вебпак воспринимает это как модуль с "побочным эффектом" и не вытряхивает его. В итоге, я выделила конкретно этот модуль в отдельный файл, решив вопрос таким образом. Остальные модули вроде бы нормально вытряхиваются.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы