大家好,我目前正在使用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目标节点5+)。

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

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

09-17 04:40