有条件导入仍然是 Webpack 中bundle的一部分



>我正在尝试有条件地加载模块,条件似乎有效,但是当条件为假时,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 文档中的动态导入章节。

最新更新