node下使用UglifyJS压缩合并JS文件的方法


Posted in Javascript onMarch 07, 2018

现在UglifyJS的最新版本为 2.8.13,主要功能为JS的压缩和合并,下面直接进入教程:

安装:

<span style="font-size:18px;color:#006600;">npm install uglify-js -g</span>

将uglifyjs安装为全局变量,方便我们在任何地方使用。

<span style="color:#006600;">下面是shell命令的中文解释:
* 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, 忽略错误命令行参数。</span>

# UglifyJS2 使用方法

> UglifyJS2使用包括2种方式

1. shell 指令调用

2. api 调用

shell命令:

合并压缩start.js、test.js这两个JS文件

~> uglifyjs start.js test.js -o new.min.js --source-map new.min.js.map

API调用:

var fs = require('fs');
var uglifyjs = require("uglify-js");
var result = uglifyjs.minify("../test.js",{
 mangle:false
});

上面的一个基本核心方法 minify ,下面我们单独看下这个方法

这是一个非常智能的方法 ,共 2个参数

第一个参数 *

第一个参数可以是 字符串,路径,路径数组;

1.字符串参数

就是我们书写的 javascript 代码可以直接当做一个字符串参数参数函数,但是需要有第二个参数告诉函数,这是 javascript 源码字符串

var result = uglifyjs.minify("var fun=function(){ alert('itKingOne博客');};",{
 mangle:false,
 fromString:true,
});

上面的第一个参数传入了 javascript 源码,第二个参数中 formString : true ,就是告诉 minify 函数,前面的参数是 需要压缩的 javascript 源码.

字符串路径

这是函数默认支持的一种方式,可以单独的一个参数,直接给定一个 需要压缩的 javascript 文件路径, 当然也可以2个参数.

var result = uglifyjs.minify("../test.js");

上面的函数执行,会吧我的上级目录中的 test.js 进行压缩.默认一个参数时,表示文件路径

数组指定多个路径

可以一个参数,但是这个参数是一个数组 [ ‘路径1',‘路径2',‘路径3'] 类似这样结果就是把上面路径的所有 javascript 压缩后返回到了 result 对象中,稍后我们单独说下 result 返回值.

var result = uglifyjs.minify([ "../test.js", "../mian.js"]);

第二个参数*

参数说明

romString属性 (default false) 指定第一个参数中的 字符串是 javascript 源码

mangle属性 默认为true;指定为false时,表示不进行混淆压缩

width和max-line-len属性 按照说明,这里应该是指压缩后的文件的长度

outSourceMap属性 用来指定函数返回值result.map字符串转化为Object后file属性的值

sourceRoot属性 用来指定函数返回值result.map字符串转化为Object后sourceRoot属性的值

返回值 result *

返回值 result 是一个对象.code 属性对应的是压缩后的脚本

{"code":"这里是压缩后的 javascript 脚本","map":null}

以上这篇node下使用UglifyJS压缩合并JS文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
非常不错的一个javascript 类
Nov 07 Javascript
js压缩工具 yuicompressor 使用教程
Mar 31 Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
Aug 19 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
JavaScript分步实现一个出生日期的正则表达式
Mar 22 Javascript
js序列化和反序列化的使用讲解
Jan 19 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
Mar 07 #Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
Mar 07 #Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 #Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 #Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 #Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 #Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 #Javascript
You might like
PHP5中虚函数的实现方法分享
2011/04/20 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
tab栏切换原理
2017/03/22 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
python如何实现单链表的反转
2020/02/10 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
python 制作磁力搜索工具
2021/03/04 Python
HTTP状态码详解
2021/03/18 杂记
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物