UglifyJS怎么混淆js

JavaScript012

UglifyJS怎么混淆js,第1张

如果你是全局安装的,可以直接在需要混淆文件的目录下,

按住shift键右击鼠标选择在此处打开命令窗口如图

2.打开窗口后直接在窗口执行

uglifyjs main.js demo.js -o foo.min.js --source-map foo.min.js.map --source-map-root http://onbook.me -p 5 -c -m --wrap --export-all

混淆文件main.js和demo.js生成foo.min.js和foo.min.js.map并指定map的来源网站

3.另一种使用方式是,把UglifyJS2包放到程序中,通过API对JS文件或JS代码进行压缩。首先,新建一个NPM项目文件package.json,然后在是下载UglifyJS2依赖包。

新建文件package.json

{

  "name": "nodejs-uglifyjs2",

  "version": "0.0.1",

  "description": "uglifyjs2",

  "author": "Conan Zhang ",

  "dependencies": {

  }

}

4.执行npm install uglify-js --save下载UglifyJS2依赖包

5.安装完成后

新建test.js开始测试

var UglifyJS = require('uglify-js')

 

//代码压缩

var result = UglifyJS.minify("var b = function () {}", {fromString: true})

console.log("\n===========================")

console.log(result)

 

//文件压缩

result = UglifyJS.minify(["demo.js"])

console.log("\n===========================")

console.log(result.code)

//多文件压缩,指定source map和网站来源

result = UglifyJS.minify(["main.js","demo.js"],{

    outSourceMap: "out.js.map",

    sourceRoot: "http://onbook.me",

    mangle:true

})

console.log("\n===========================")

console.log(result.code)

console.log(result.map)

试了一下发布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进行修改:

找到:

修改为:

完成第一步,此处使用刚安装好的库

然后找到:

修改为:

此处是为了处理egret publish的时候会引起的编译错误。

4.执行egret publis,可以正常发布。

目前我这么处理还没问题,不知道是否有隐藏问题,感谢指正。

ES6越来越广泛,期待Egret官方能够把常用集成库都处理成支持ES6的版本。

5.备注:

uglify在对第三方库生成.min.js时,如果想集成到Egret中,不要加参数,直接输出即可。示例如下:

1.错误写法,能正常debug能正常release但不能正常运行:

2.正确写法,全部正常:

** 补充:如果编译目标可为es5,忽略以上全部说明,直接在lib中添加es6配置即可,如下