Я пытаюсь создать веб-приложение с помощью Webpack, и я ударил немного стены с определенной частью дизайна - надеюсь, кто-то здесь будет иметь опыт делать подобные вещи (или знать достаточно, чтобы сказать мне, что я делаю это совершенно неправильно)!Требовать набор модулей на основе константы DefinePlugin
В принципе, у нас есть приложение «Угловая панель», состоящее из «оболочки» (общий пользовательский интерфейс, службы управления сеансом и т. Д.) И набор модулей (автономные разделы приложения, которые можно подключить к оболочке). Сложный момент в том, что это приложение будет распространено среди нескольких клиентов, каждому из которых потребуется другой набор модулей, и ему потребуются несколько разные параметры конфигурации.
Я сделал некоторый прогресс с этим до сих пор с помощью DefinePlugin
для загрузки в файле конфигурации JSON в качестве константы при построении времени:
const envConfig = require(`./config/${yargs.argv.env || "dev"}`);
...
new webpack.DefinePlugin({
__ENV__: Object.keys(envConfig).reduce((obj, key) => {
obj[key] = JSON.stringify(envConfig[key]);
return obj;
}, {})
})
Затем я попытался использовать динамический требуется включать только указанные модули, например:
__ENV__.modules.map((id) => require(`./modules/${id}/index.ts`).default)
Это рода работали - правые модули загружаются, но Webpack не подхватывает на то, что __ENV__
никогда не будет меняться во время выполнения, поэтому бушель Сам файл ild включает в себя всех модулей, включая отключенных. Очевидно, что это увеличило бы размер файла без необходимости для клиентов, которым нужен только один модуль, поэтому я не очень доволен им.
Итак, чтобы уменьшить его до простого вопроса - есть простой способ загрузить определенный набор модулей на основе константы DefinePlugin
(или есть альтернативный способ достижения того, чего я пытаюсь достичь) ? Я чувствую, что есть что-то очевидное, которого я должен упустить.
Не могу поверить, что я не думал об этом ... спасибо за помощь! –
Это круто. Замечательно, что это сработало для вас. :) –