使用 gulp 缩小 es2017

minify es2017 with gulp

大家好,我目前正在使用 uglify-gulp 和 babel 来缩小我的 js。它适用于 es2015 和 es2016。但是如果我尝试做 es2017,它就会中断。

有谁知道缩小使用 es2017 中新实验性功能的 js 的变通方法吗?

gulp.src('build/js/bundled/bundle.js')
.pipe(babel({
    compact: false,
    presets: ["es2017", "react"], 
    plugins: ["transform-decorators-legacy"],
}))
.pipe(uglify())
.pipe(gulp.dest('build/js/bundled'));

产生此错误

GulpUglifyError: unable to minify JavaScript

如果我将 es2017 更改为 es2015/es2016,它将缩小我没有 es2017 功能的捆绑包。但我希望能够使用这些实验性功能并能够缩小我的代码

我认为 Uglify 无法解析某些 ES2015 功能,因此您需要将它们转换为 ES5(es2017 目标是 Node 5+)。

使用 these webpack instructions,特别是预设和插件,您应该能够让它工作(至少它对我有用,因为我可以通过使用 es2017 来复制类似的 Uglify 问题) :

presets: ['es2015', 'es2017', 'react'],
plugins: ['transform-runtime', 'transform-decorators-legacy', 'transform-class-properties']