我在我的项目中使用了grunt-uglify,并且正在使用es6。对于一些es6特性,比如fat arrow function,它会抛出一个错误。我认为uglify无法理解这种语法。那么,我有办法解决这个问题吗?也就是说,我可以使用什么东西来让uglify理解所有的es6语法?
我在我的项目中使用了grunt-uglify,并且正在使用es6。对于一些es6特性,比如fat arrow function,它会抛出一个错误。我认为uglify无法理解这种语法。那么,我有办法解决这个问题吗?也就是说,我可以使用什么东西来让uglify理解所有的es6语法?
你可以使用 grunt-contrib-uglify
的 harmony
分支。
npm install git://github.com/gruntjs/grunt-contrib-uglify.git#harmony --save-dev
与es6完美配合。不需要额外的grunt设置。
目前还没有官方的ES6压缩工具(其他工具如Google Closure编译器支持ES6,但会将其转换为“传统js”然后进行压缩)。
尽管UglifyJs并不支持所有ES6功能,但UglifyJS2的Harmony分支似乎支持箭头函数和其他功能。
你可以在这里阅读有关该问题的讨论。看起来除了等待(或创建自己的ES6压缩器)外,没有其他选择。
更新
现在您有两个选项可以压缩ES6:
grunt-contrib-uglify
的harmony
分支已被弃用,这不是一个可持续的解决方案。
grunt.loadNpmTasks('grunt-contrib-uglify-es');
添加到Gruntfile中后才能生效。这在官方GitHub页面中已经说明了。 - Harshith Rai