Javascript Webpack输出两个版本,一个用于ES6,一个用于IE11

Javascript Webpack输出两个版本,一个用于ES6,一个用于IE11,javascript,webpack,Javascript,Webpack,我有一个ES5/ES6模块的网页配置,工作得相当好。直到最近,它还通过TargetsPlugin生成与IE11兼容的版本 我之所以说“直到最近”,是因为在实验过程中,我注意到将巴别塔转换到较旧的语言规范,我们立即从包中减去了300KB。如果我们打开它,90%左右的用户将获得更精简、更快、更好的体验 但我有合同义务支持IE11。我可以分开做吗? 我想要的是一个ES6 ish构建(我们拥有的)和一个配套的IE11构建。在切换浏览器所看到的版本时,以编程方式将其锁定并不困难。。。但是我如何让webpa

我有一个ES5/ES6模块的网页配置,工作得相当好。直到最近,它还通过TargetsPlugin生成与IE11兼容的版本

我之所以说“直到最近”,是因为在实验过程中,我注意到将巴别塔转换到较旧的语言规范,我们立即从包中减去了300KB。如果我们打开它,90%左右的用户将获得更精简、更快、更好的体验

但我有合同义务支持IE11。我可以分开做吗? 我想要的是一个ES6 ish构建(我们拥有的)和一个配套的IE11构建。在切换浏览器所看到的版本时,以编程方式将其锁定并不困难。。。但是我如何让webpack来做呢


如果有什么不同的话,我不需要IE11版本有任何奇特的功能。它可以是一个1MB的无定形块,也可以完全分块。不管怎样,只要它能工作。

好的,原来webpack可以同时处理多个配置。在通常执行
module.exports={…config…}
的地方,实际上可以返回一个配置对象数组

所以我选择了这样的方式:

var realConfig = {
  ...
}

var ie11 = _.cloneDeep(real)
ie11.output.filename = 'js/ie11.[name].js'

ie11.plugins.push(
  new TargetsPlugin({ browsers: ["IE >= 11"] })
)

module.exports = [ realConfig, ie11 ]
这给了我一个IE兼容的版本。在我的模板中,我只是在用户代理中检测到“MSIE”,并将其输出。可能不是最可靠的,但构建也应该在现代浏览器上工作,所以我不担心