您的位置:首页 > Web前端 > Node.js

js压缩工具uglify-js--nodejs常用模块(3)

2014-06-02 10:16 387 查看


模块介绍

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: