grunt uglify js 不理解某些 es6 功能?

some es6 features are not understood by grunt uglify js?

我在我的项目中使用了 grunt-uglify,并且我正在使用 es6。对于某些 es6 功能,例如粗箭头功能,它会抛出错误。我认为 uglify 不理解这种语法。我有办法解决这个问题吗?我的意思是我可以使用任何东西让 uglify 理解所有的 es6 语法吗?

官方还没有缩小 ES6 的工具(其他工具如 Google Closure 编译器支持 ES6,但它会将它转译为 "traditional js" 然后它被缩小).

虽然 UglifyJs 不支持所有的 es6 功能,the Harmony branch of UglifyJS2 似乎支持箭头功能和其他功能。

You can read the discussion about it in the issue of github here。似乎没有其他选择可以等待(或创建您自己的 ES6 压缩器)。

更新

现在您有 2 个选项来缩小 ES6:

如果生成的代码不需要使用 ES6 语法,也可以在丑化代码之前将 ES6 转换为 ES5。例如,这可以通过 Grunt 任务 grunt-es6-transpiler.

完成

您可以使用 grunt-contrib-uglifyharmony 分支。

npm install git://github.com/gruntjs/grunt-contrib-uglify.git#harmony --save-dev

与 es6 完美配合。不需要额外的 grunt 设置。

我刚刚更新到 uglify-js@2.8.29 并且有效。

Grunt 插件 ES6 解析器、mangler/compressor 和 ES6+ 的美化工具包现已可用:

https://github.com/adascal/grunt-terser

干得好,它按预期工作。

grunt-contrib-uglifyharmony 分支已弃用,它不是可持续的解决方案。