Webpack多ES版本构建

时间:2017-10-30 11:50:29

标签: javascript webpack ecmascript-6 config

你好,Stackoverflow的聪明人。我对我正在尝试设置的webpack构建提出了挑战。

我想要实现的目标

我正在尝试创建一个生成两个版本的JS文件的构建。一个使用ES 6/7 +,将被最新的浏览器使用,另一个被转换回ES 5。

原因是我希望最小化发送到“体面”浏览器的代码并利用可以从使用纯ES 6/7中获得的任何性能优化,更不用说在代码中添加更少的polyfill。

问题

目前我通过运行两个并行版本实现了我的目标;对于ES 6/7 +版本仅使用少量Babel变换来转换代码的一个,以及使用es2015预设转换回ES 5的第二个,这通常按预期工作。但是我的问题是,转换两个版本的完整版本是SUUUUUPER慢。我们说的是5分钟慢,这远非理想。

我立即看到这个设置的一个问题是,有很多代码被重新分析,可能不需要重新分析,例如CSS(手写笔),图像,SVG,字体等。所有这些资产实际上只需要处理一次,因为对于每个版本的JS文件它都是完全相同的。所以实际上我只需要转换代码的JS部分,这就是为什么我创建了rebabel-webpack-plugin模块,它实际上只是接收发出的文件,再次转换它们并以另一个名称保存代码。这工作正常,但它感觉hacky,它有点绕过原来的webpack构建流程,因此有一些可能的缺点:

  1. 我真的不认为SourceMaps会正常工作,因为它没有转换原始代码。
  2. 使用babel-preset-env babel-polyfill组合添加polyfill可能具有挑战性和/或hacky
  3. 捆绑分析器可能搞砸了
  4. 无法为重新生成的文件执行共享代码文件
  5. 我没有验证这些缺点,但我可以看到它们可能出现的直接问题。

    我已经尝试在发出的文件上运行后续构建,这有效,但通常它与使用rebabel-webpack-plugin有点相似,但设置更尴尬(收集发出文件的列表 - >设置新配置 - >运行新版本。

    实际问题

    所以我的问题对你来说明智的想法归结为:如何使用webpack实现我们的JS文件的正确“重新定位”,而不必运行两个并行构建?

0 个答案:

没有答案