You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
uglify-es is no longer maintained and uglify-js does not support ES6+.
terser is a fork of uglify-es that mostly retains API and CLI compatibility with uglify-es and uglify-js@3.
初步编写了一个
gulpfile.js
的文件后,命令行执行压缩,然后报了一个错:根据提示找到对应文件代码:
47行19列的对应字符是
$
,提示说是语法错误,遂猜测是不是不支持模板字符串引起的问题?(进一步猜想是不支持 ES6 语法)通过编写实例测试(编写了一个简单的目标字符串),发现不是(至少简单的目标字符串可以编译)。于是试着注释报错代码,看看会不会还有其他类似的问题(记录了几种典型):
查看 gulp-uglify 仓库,了解到
gulp-uglify
基于UglifyJS3
,并没有显示说明是否支持 ES6+ 语法,所以就去看UglifyJS
(UglifyJS3
特指UglifyJS
3.x 版本,以区别 2.x 版本),在主页看到了这么一句:这就很好解释了上面的问题(/(ㄒoㄒ)/~~)。
如何解决 ES6+ 语法问题呢?官方有提示:
所以要编译 ES6+ 语法,还需要安装
babel
之类的插件。不使用插件的话,还可以使用uglify-es
(但terser
和gulp-uglify-es
都表示该库不在维护了,慎用)。根据 Unexpected token: keyword (const) #352 来看,可以使用
terser
来替代,其仓库也明确表示支持 ES6+ 语法 :由
terser
延申了一个gulp-terser
;除此外,由uglify-es
延申出了gulp-uglify-es
总结一下:
最后补一句(基于当前时间:2021/01/25):
UglifyJS
还在持续更新中;uglify-es
已经三年没有更新了;gulp-uglify
已经两年没有更新了(维护者在 issue#352 说该项目还能配合着terser
使用...);terser
持续更新中;gulp-terser
是个新项目,最近更新在两个月前;gulp-uglify-es
近一年没有更新;The text was updated successfully, but these errors were encountered: