Uglifyjs(JS代码优化工具)入门 安装使用

 更新时间:2020年04月13日 23:39:17   作者:楚游香  
Uglify JS 是一个服务端node.js的压缩程序。需要的朋友可以测试下

UglifyJS使用入门

1、简介

UglifyJS是个包含JS解释器、代码最小化、压缩、美化的工具集,是前端开发打包的最常用工具之一。
CocosCreator引擎采用gulp管理构建流程,其中也使用UglifyJS来做代码的合并和压缩。

UglifyJS目前只能压缩JS代码,且只支持到ES5语法,尚不支持ES6。

2、安装

UglifyJS基于Node.js开发,所以首先确保安装了Node.js环境。
如果想以一个独立命令的方式运行,则使用以下命令安装

npm install uglify-js -g

安装完成后,输入 uglifyjs-V 查看版本号,检测安装是否成功。

如果想作为一个模块通过代码调用,则使用以下命令安装

npm install uglify-js --save-dev

3、用法

UglifyJS的命令格式如下

uglifyjs [input files] [options]

输入文件既可以是单个,也可以是多个,建议传参时先传文件,再传选项。UglifyJS会根据传入选项,把文件放在队列中依次解释。

例如,有一个名为 copy.js的js代码文件如下。

var fs = require('fs');
function main(argv) {
  fs.createReadStream(argv[0]).pipe(fs.createWriteStream(argv[1]));
}
var args = process.argv.slice(2);
if (!!args && args.length === 2) {
  main(args);
} else {
  console.log('args is invalid.');
}

我们现在来测试UglifyJS的几个常用选项。

3.1 -o 输出

uglifyjs copy.js -o min.js

上面命令传入 copy.js,输出到 min.js,结果如下。

var fs=require("fs");function main(argv){fs.createReadStream(argv[0]).pipe(fs.createWriteStream(argv[1]))}var args=process.argv.slice(2);if(!!args&&args.length===2){main(args)}

可以看到,效果是代码去空格且合并到一行,但函数和变量名都不变。

3.2 -c 压缩

uglifyjs copy.js -c -o min.js

上面命令传入 copy.js,压缩输出到 min.js,结果如下。

var fs=require("fs");function main(argv){fs.createReadStream(argv[0]).pipe(fs.createWriteStream(argv[1]))}var args=process.argv.slice(2);args&&2===args.length&&main(args);

和上一命令的效果基本相同,但把 if语句简化了。

3.3 -m 混淆

uglifyjs copy.js -m -c -o min.js

上面命令传入 copy.js,混淆+压缩输出到 min.js,结果如下。

var fs=require("fs");function main(r){fs.createReadStream(r[0]).pipe(fs.createWriteStream(r[1]))}var args=process.argv.slice(2);args&&2===args.length&&main(args);

可以看到,混淆+压缩的效果,就是在前面基础上,把函数参数用最简字母代替了。

整体说来,UglifyJS的混淆比较轻量,只是简化了函数参数和变量名,而不会修改语法树。

3.4 输入多文件

uglifyjs copy.js copy2.js -m -c -o min.js

上面命令传入 copy.js、 copy2.js,混淆+压缩输出到 min.js,结果如下。

var fs=require("fs");function main(e){fs.createReadStream(e[0]).pipe(fs.createWriteStream(e[1]))}(args=process.argv.slice(2))&&2===args.length&&main(args);var args;fs=require("fs");function main(e){fs.createReadStream(e[0]).pipe(fs.createWriteStream(e[1]))}(args=process.argv.slice(2))&&2===args.length&&main(args);

可以看到,效果就是在前面基础上,把多个输入文件顺序合并到同一行了,同时对变量重复命名做了规避。

下面是其他网友的补充

需要先安装node,进入命令行,查看node,npm是否正确安装。

 

接下来安装UglifyJS,命令如:npm install uglify-js -g

 

最后别忘了把node和npm添加到环境变量中,我的分别是

C:\Program Files (x86)\nodejs\;

C:\Users\taozhou\AppData\Roaming\npm;

现在就可以使用uglifyjs就行压缩了,如

uglifyjs folder/dom.js -> folder/dom-min.js

会把目录folder下dom.js压缩,保存在同一个目录下。

详细参数参考: https://github.com/mishoo/UglifyJS

相关文章

  • Javascript 入门基础学习

    Javascript 入门基础学习

    习.net已经近2年了,最近学习Ajax时发现自己的很多技术功底很是欠缺,比如JavaScript。今后我会将我正在学习的也写成笔记,有时间的话将以前的东西整理整理也传上来。
    2010-03-03
  • javascript回调函数详解

    javascript回调函数详解

    这篇文章主要介绍了javascript回调函数的相关知识点以及用法代码实例分析,对此有需要的朋友可以学习参考下。
    2018-02-02
  • 详解JavaScript操作HTML DOM的基本方式

    详解JavaScript操作HTML DOM的基本方式

    这篇文章主要介绍了详解JavaScript操作HTML DOM的基本方式,HTML DOM是专门适用于HTML/XHTML的文档对象模型,需要的朋友可以参考下
    2015-10-10
  • JavaScript中的Number数字类型学习笔记

    JavaScript中的Number数字类型学习笔记

    对数字类型支持得不够强大是很多人吐槽JavaScript的原因,anyway...这里整理了JavaScript中的Number数字类型学习笔记,适合入门及基础知识复习,需要的朋友可以参考下
    2016-05-05
  • Javascript 按位与运算符 (&)使用介绍

    Javascript 按位与运算符 (&)使用介绍

    Javascript 按位与运算符 (&),用于对两个 32 位表达式执行按位“与”运算,而一般表达式里面都是十进制整数,此时需要先转换成对应的二进制,然后向前加0,补足32位
    2014-02-02
  • 在JavaScript中使用NaN值的方法

    在JavaScript中使用NaN值的方法

    这篇文章主要介绍了在JavaScript中使用NaN值的方法,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • ajax跨域访问遇到的问题及解决方案

    ajax跨域访问遇到的问题及解决方案

    在本文中我们给大家整理了关于ajax跨域访问的相关知识点以及遇到的问题和解决方法,需要的朋友们参考下。
    2019-05-05
  • Java Mybatis框架入门基础教程

    Java Mybatis框架入门基础教程

    MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果,对MyBatis感兴趣的小伙伴们可以参考一下
    2015-09-09
  • javascript 基础篇1 什么是js 建立第一个js程序

    javascript 基础篇1 什么是js 建立第一个js程序

    javascript是很多东西的基础,比如jsp,ajax等,如果不会这么,那么学起这些来就比较麻烦,所以要先学好这个,为将来的学习打好经济基础
    2012-03-03
  • 老生常谈JavaScript深拷贝与浅拷贝

    老生常谈JavaScript深拷贝与浅拷贝

    这篇文章主要为大家详细介绍了JavaScript的深拷贝与浅拷贝,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02

最新评论