试了一下发布ES6,结果报错,不支持uglify-js,需要换插件。从论坛中找到如下链接:
https://bbs.egret.com/forum.php? ... 52516&highlight=es6
但是看了一下发现并不是很合适,因为Egret中有不少地方用到了uglify-js,换起来有点麻烦。
这里我直接使用uglify-js的harmony分支uglify-es,源在github上:
https://github.com/mishoo/UglifyJS2/tree/harmony
按以下步骤操作:
1.按上面链接的文档进行安装,我直接npm安装的,没有替换Egret集成的uglify-js
2.安装完后找到Egret库中的utils.js,我的Mac目录在:/Users/xxxxxx/Library/Application Support/Egret/engine/5.2.14/tools/lib/utils.js
3.打开utils.js进行修改:
找到:
var UglifyJS = require("./uglify-js/uglifyjs");
修改为:
var UglifyJS = require("uglify-es");
完成第一步,此处使用刚安装好的库
然后找到:
var result = UglifyJS.minify(sourceFile, { compress: { global_defs: defines }, fromString: true, output: { beautify: false } });
修改为:
var result = UglifyJS.minify(sourceFile, { compress: { global_defs: defines }, output: { beautify: false } });
此处是为了处理egret publish的时候会引起的编译错误。
4.执行egret publis,可以正常发布。
目前我这么处理还没问题,不知道是否有隐藏问题,感谢指正。
ES6越来越广泛,期待Egret官方能够把常用集成库都处理成支持ES6的版本。
5.备注:
uglify在对第三方库生成.min.js时,如果想集成到Egret中,不要加参数,直接输出即可。示例如下:
1.错误写法,能正常debug能正常release但不能正常运行:
uglifyjs spine-webgl.js -o spine-webgl.min.js -c -m --mangle-props
2.正确写法,全部正常:
uglifyjs spine-webgl.js -o spine-webgl.min.jsuglify
** 补充:如果编译目标可为es5,忽略以上全部说明,直接在lib中添加es6配置即可,如下
{
"compilerOptions": {
"target": "es5",
"outDir": "bin-debug",
"experimentalDecorators": true,
"removeComments": true,
"lib": [
"es5",
"es6",
"es2017",
"esnext",
"dom",
"dom.iterable",
"scripthost",
"es2015.promise"
],
"downlevelIteration": true,
"types": [],
"sourceMap": true
},
"include": [
"src",
"libs",
"protobuf/**/*.d.ts"
]
}