>我正在尝试有条件地加载模块,条件似乎有效,但是当条件为假时,webpack 仍然使条件模块成为捆绑包的一部分,这是导入代码:
if (process.env.FEAT_SUPPORT === 'on') {
require('feature');
console.log('Enabled')
} else {
console.log('disabled')
}
即使值不是"on",它仍然需要模块。我使用日志行对此进行了测试,当它打开和关闭时会出现正确的日志行。
我正在使用 Webpack 定义插件来设置变量。执行上述操作的主要原因是保持捆绑包大小较小,并且似乎没有这样做。
(代表问题作者发布答案(。
所以上面的代码几乎是正确的,我需要删除表达式并简单地使用if(process.env.FEAT_SUPPORT)
,其中FEAT_SUPPORT替换为"true"或"false">
上require
可以在代码中的任何位置调用,因此这将在捆绑包中添加一个新模块。如果你想把这个需要拆分成一个单独的文件,你应该使用require.ensure
的方法,那个 webpack 会为你拆分它。
您也可以使用新的 ES6 import()
语法,这将创建相同的结果。
请阅读:webpack 文档中的动态导入章节。