История. Недавно я обнаружил странное поведение при использовании Webpack и динамического импорта. Сначала я подумал, что это может быть сторонняя библиотека «Загружаемые компоненты», которую я использовал, поэтому я обнаружил ошибку (https://github.com/gregberge/loadable-components/issues/517) на их конце. Автор ответил, что поведение исходит из Webpack и самого динамического импорта.
Я могу смириться с тем фактом, что динамический импорт не искажается, для меня важнее понять, почему это так.
Демо-репозиторий для демонстрации поведения можно найти здесь: https://github.com/dazlious/treeshaking-dynamic-imports
Краткое описание проблемы. С моей точки зрения, импортированный именованный экспорт не должен заставлять весь экспортированный код объединяться в него.
В демонстрационном случае у нас есть компонент (./lib/index.jsx), который имеет два подкомпонента, называемых module1 (./lib/module1/module1.jsx) и module2 (./lib/module1/module2.jsx). Module1 экспортирует константу с именем FOO_BAR, которая затем импортируется Module2 как именованный импорт.
При просмотре результатов сборки вы обнаружите, что Module2 содержит Module1 целиком, а не только строку, которая специально импортирована.
Есть ли здесь кто-нибудь с глубокими знаниями Webpack и / или динамического импорта? Был бы рад узнать больше о поведении.