zoukankan      html  css  js  c++  java
  • 用UglifyJS2合并压缩混淆JS代码

    目的:
    合并、混淆、压缩

    UglifyJS是UglifyJS2的前身,是一个Javascript开发的通用的语法分析、代码压缩、代码优化的一个工具包。UglifyJS是基于Nodejs环境开发,支持CommonJS模块系统的任意的Javascript平台。

    UglifyJS的实现主要分为2部分:

    • 生成JS代码的抽象语法树(AST),通过parse-js.js完成。
    • 遍历AST语法树,做各种操作,比如自动缩进、缩短变量名、删除块括号{}、去空格、常量表达式、连续变量声明、语块合并、去掉无法访问的代码等,通过process.js完成。

    UglifyJS2是作者对UglifyJS的重写,是完全的重写,而不仅仅是升级。从UglifyJS2官司方网页介绍看,UglifyJS2把整个的JS压缩过程,做了更进一步的细化。


    UglifyJS2安装

    系统环境:

    • win7 64bit
    • Nodejs:v0.10.5
    • Npm:1.2.19

    UglifyJS2的安装非常简单,和Nodejs的其他包一样,全局安装使用如下命令。

    npm install uglify-js -g

    也可以通过github下载源代码安装。

     git clone git://github.com/mishoo/UglifyJS2.git cd UglifyJS2 

    我们在使用UglifyJS2的时候主要有2种方式,一种是通过命令行操作,对指定的JS文件进行压缩;另一种是通过程序的API调用,对文件或内存中的JS代码进行压缩。

     

    对命令参数进行解释:

    • –source-map [string],生成source map文件。
    • –source-map-root [string], 指定生成source map的源文件位置。
    • –source-map-url [string], 指定source map的网站访问地址。
    • –source-map-include-sources,设置源文件被包含到source map中。
    • –in-source-map,自定义source map,用于其他工具生成的source map。
    • –screw-ie8, 用于生成完全兼容IE6-8的代码。
    • –expr, 解析一个表达式或JSON。
    • -p, –prefix [string], 跳过原始文件名的前缀部分,用于指定源文件、source map和输出文件的相对路径。
    • -o, –output [string], 输出到文件。
    • -b, –beautify [string], 输出带格式化的文件。
    • -m, –mangle [string], 输出变量名替换后的文件。
    • -r, –reserved [string], 保留变量名,排除mangle过程。
    • -c, –compress [string], 输出压缩后的文件。
    • -d, –define [string], 全局定义。
    • -e, –enclose [string], 把所有代码合并到一个函数中,并提供一个可配置的参数列表。
    • –comments [string], 增加注释参数,如@license、@preserve。
    • –preamble [string], 增加注释描述。
    • –stats, 显示运行状态。
    • –acorn, 用Acorn做解析。
    • –spidermonkey, 解析SpiderMonkey格式的文件,如JSON。
    • –self, 把UglifyJS2做为依赖库一起打包。
    • –wrap, 把所有代码合并到一个函数中。
    • –export-all, 和–wrap一起使用,自动输出到全局环境。
    • –lint, 显示环境的异常信息。
    • -v, –verbose, 打印运行日志详细。
    • -V, –version, 打印版本号。
    • –noerr, 忽略错误命令行参数。

    UglifyJS2的API使用

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

    新建文件package.json

     ~ vi D:workspacejavascript
    odejs-uglifyJS2package.json   {   "name": "nodejs-uglifyjs2",   "version": "0.0.1",   "description": "uglifyjs2",   "author": "Conan Zhang ",   "dependencies": {   } } 

    下载UglifyJS2依赖包

     D:workspacejavascript
    odejs-uglifyJS2>npm install uglify-js --save npm WARN package.json nodejs-uglifyjs2@0.0.1 No readme data! npm http GET https://registry.npmjs.org/uglify-js npm http 304 https://registry.npmjs.org/uglify-js npm http GET https://registry.npmjs.org/async npm http GET https://registry.npmjs.org/source-map npm http GET https://registry.npmjs.org/optimist npm http GET https://registry.npmjs.org/uglify-to-browserify npm http 304 https://registry.npmjs.org/uglify-to-browserify npm http 304 https://registry.npmjs.org/optimist npm http 304 https://registry.npmjs.org/async npm http 304 https://registry.npmjs.org/source-map npm http GET https://registry.npmjs.org/wordwrap npm http GET https://registry.npmjs.org/amdefine npm http 304 https://registry.npmjs.org/wordwrap npm http 304 https://registry.npmjs.org/amdefine uglify-js@2.4.14 node_modulesuglify-js ├── uglify-to-browserify@1.0.2 ├── async@0.2.10 ├── optimist@0.3.7 (wordwrap@0.0.2) └── source-map@0.1.34 (amdefine@0.1.0) 
     

  • 相关阅读:
    10、驱动中的阻塞与非阻塞IO
    8、Linux设备驱动的并发控制
    入职一个月考核学习
    5、映射的思考
    6、udev机制
    7、字符设备系统
    linux 内存管理之kmalloc、vmalloc、malloc、get_gree_pages的区别
    嵌入式笔试题(linux基础)
    驱动总结
    系统移植总结
  • 原文地址:https://www.cnblogs.com/hanyuxinting/p/4665176.html
Copyright © 2011-2022 走看看