我对ES6+(称为现代JavaScript)相对较新,但似乎如果我想在浏览器中使用它,我需要babel-minify或terser。(起初我以为Babili是另一个工具,但它只是Babel-Minify的旧名称。)
关于浏览器的polyfills,有一些生产就绪的解决方案,如@babel/polyfill或Polyfill.io。使用它们可以向现代浏览器发送更小、更快的代码,因为它们不需要/需要少量的polyfills(快速测试浏览器,动态加载所需的polyfills,然后启动我们应用程序的主脚本)。因此,使用这些现代技术似乎是非常合理的。
接下来是我在选择
Webpack团队决定在即将发布的Webpack 5中转换到
关于浏览器的polyfills,有一些生产就绪的解决方案,如@babel/polyfill或Polyfill.io。使用它们可以向现代浏览器发送更小、更快的代码,因为它们不需要/需要少量的polyfills(快速测试浏览器,动态加载所需的polyfills,然后启动我们应用程序的主脚本)。因此,使用这些现代技术似乎是非常合理的。
接下来是我在选择
babel-minify
或terser
时遇到的困境。Webpack团队决定在即将发布的Webpack 5中转换到
terser
。
Babel团队制作了一张比较表,显示terser
速度更快。
文档说明terser
是uglify-es
的一个分支,在此之前被广泛使用。
这些使我认为我应该选择terser
。
但另一方面,Babel仍然需要进行转换(并且可以用于许多有用的事情)。他们已经从事这项业务很长时间了(尽管Babili/babel-minify
是在2016年8月26日首次发布的,所以uglify
更旧)。他们在GitHub上拥有伟大的开发者社区,可能会更早地发现和修复漏洞。基于这些原因,当涉及到生产安全输出时,我对他们更加信任。但我没有找到任何文章显示babel-minify
相比terser
的优点。
问题:
我会选择terser
,因为它看起来很有前途,而且上述原因,但是:
- 在哪些情况下我应该使用
babel-minify
而不是terser
? - 使用Babel包完成所有操作是否有任何优势?