白鹭发布ES6时uglify-js不支持es6的解决方案

试了一下发布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"

    ]

}

你可能感兴趣的:(白鹭发布ES6时uglify-js不支持es6的解决方案)