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

模块介绍

  • 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

阅读更多

没有更多推荐了,返回首页