模块介绍
- uglify-js是主流的js合并压缩工具,jquery现在用的就是这个工具。
- 支持功能有:文件的合并,生产map文件,去注释去空格,混淆压缩
- 缺点:这个工具只针对js,至少官方没有说明支持css
说明文档
https://github.com/mishoo/UglifyJS2
demo
这里只贴了代码,具体步骤参考《js,css压缩工具yuicompressor--nodejs常用模块(1)》。
var fs = require('fs');
var uglifyjs = require("uglify-js");
var result = uglifyjs.minify("../source/test.js",{
mangle:false
});
fs.writeFile('../source/test_uglify_js.js', result.code, function(){
console.log('uglify success!');
});
从上面代码可以看出,minify函数是同步的。
minify函数参数说明
第一个参数
- 情况一:一段js代码 String类型,这时第二参数options里的fromString属性须要指定fromString为true。demo如下:
var result = uglifyjs.minify("var func = function(){var name = 'ppp'; alert(name);}",{ fromString:true, mangle:false });
- 情况二:文件路径 String类型,这时第二参数options里的fromString属性须要指定为为false(默认为false,这里可以不指定)。demo如下:
var result = uglifyjs.minify("../source/test.js");
- 情况三:文件路径的集合 Array类型,这时会合并这些文件,然后进行压缩。demo如下:
var result = uglifyjs.minify([ "../../../grunt/offline-package/Gruntfile.js", "../../../grunt/offline-package/test_glob.js"]);
第二个参数 options
- fromString属性 (default false) — if you pass true then you can pass JavaScript source code, rather than file names.(见上)
- mangle属性 默认为true;指定为false时,表示不进行混淆压缩
- width和max-line-len属性 按照说明,这里应该是指压缩后的文件的长度。但写了demo试了下没效果
- charset属性 这个属性是不存在的,yuicompressor里有这个属性,用来指定文件的解码类型,看样子uglify里做了自动识别。
- outSourceMap属性 用来指定函数返回值result.map字符串转化为Object后file属性的值。demo:"out.js.map"
- sourceRoot属性 用来指定函数返回值result.map字符串转化为Object后sourceRoot属性的值。 demo: "http://example.com/src"
-
inSourceMap属性 If you're compressing compiled JavaScript and have a source map for it, you can use the inSourceMap argument。demo:
var result = UglifyJS.minify("compiled.js", { inSourceMap: "compiled.js.map", outSourceMap: "minified.js.map" });
ps: 对于后面几个属性都是和map相关的,具体的介绍可以参考:http://www.2fz1.com/?p=565