我正在尝试使用 Webpack 构建一个 Web 应用程序,但我在设计的特定部分遇到了一些困难 - 希望这里有人有做类似事情的经验(或者足够了解告诉我我是这样做完全错误)!
基本上,我们有一个 Angular 仪表板应用程序,它由一个“shell”(通用 UI、会话管理服务等)和一组模块(可以插入 shell 的应用程序的独立部分)组成。棘手的一点是,这个应用程序将分发给多个客户,每个客户都需要一组不同的模块,并且需要稍微不同的配置选项。
到目前为止,我已经在这方面取得了一些进展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;
}, {})
})
然后我尝试使用动态 require 仅包含指定的模块,如下所示:
__ENV__.modules.map((id) => require(`./modules/${id}/index.ts`).default)
This sort of有效 - 正确的模块被加载,但 Webpack 没有意识到这一点__ENV__
在运行时永远不会改变,因此构建文件本身包括all模块的数量,包括禁用的模块。显然,对于只想要单个模块的客户来说,这会不必要地增加文件大小,所以我对此并不满意。
因此,将其简化为一个简单的问题 -有没有一种简单的方法来加载基于DefinePlugin
恒定(或者是否有其他方法来实现我想要实现的目标)?我觉得我一定错过了一些明显的东西。
你可以设置一个解析别名并根据客户进行配置。这将为您提供您想要的设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)