node-minifier

a minify tool

node-minifier

a minify tools for web development

npm install node-minifier

require node-minifer

var minifier = require('node-minifier');
  • 使用UglifyJS2进行压缩
  • 自动保留/*! ... */类型的注释
  • 保留$, exports, require, define不被替换
  • 可以自定义需要删除掉的方法调用
//js中有个全局方法名为onMessageFromSWF, 这个方法名称不能被mangle, 可以把它定义成保留字。 
//console的所有方法默认被移除,Y.log, Kissy.log, S.log也可以自定义移除。 
//不要在console.log调用中改变逻辑,避免产生side effect 
var minifiedJS = minifier.minifyJS(jscontent, {
  expect: ['onMessageFromSWF'],
  banner: '在文件头部加入的内容',
  footer: '在文件尾部加入的内容',
  remove: ['console', 'Y.log', 'Kissy.log', 'S.log']
});
 
 
//默认将中文转成Unicode编码,可以通过下面的方式不转码 
this.minifyJS(jscontent, {
  ascii_only: false
});

minifyJSON方法可以对JSON代码进行压缩或格式化

//压缩 
var minifiedJSON = minifier.minifyJSON(content);
//格式化 
var formatJSON = minifier.minifyJSON(content, {indent: 2});
var minifiedCSS = minifier.minifyCSS(content);
var minifiedHTML = minifier.minifyHTML(content);
var datauriCSS = minifier.datauri(content, {
  input: 'the-dir-of-css-file'
});

如果CSS中定义了图片以绝对路径作为访问地址,需要额外定义绝对路径

.btn{
  background: url(/img/btn.png);
}
var datauriCSS = minifier.datauri(content, {
  input: 'the-dir-of-css-file',
  workspace: '/var/www/home-website/static/img'
});

minifyImage方法会先尝试使用optimage方法压缩图片,如果失败,则降级到使用smushit方法压缩。

  • optimage - 使用本地的压缩工具压缩。
  • smushit - 使用smush.it API进行压缩。
minifier.minifyImage('logo.png', 'logo.min.png', function(edata){
  if(e){
    console.log(e);
  }else{
    console.log(data.msg);
  }
});

压缩jpg - 使用jpegtran压缩jpg

minifier.optimage('input.jpg', 'output.jpg', function(errdata){
    console.log(data.saved);
});

压缩png - 使用optipng, pngcrush, pngquant, advpng压缩png

minifier.optimage('input.png', 'output.png', function(errdata){
    console.log(data.saved);
});

压缩gif - 使用gifsicle压缩gif

minifier.optimage('input.gif', 'output.gif', function(errdata){
    console.log(data.saved);
});

图片压缩统计

图片类型(数量)压缩前(byte)smush.it压缩掉(byte)pagespeed压缩掉optimage压缩掉(byte)smush.it平均压缩%optimage平均压缩%pagespeed平均压缩%smush.it总计压缩%optimage总计压缩%pagespeed总计压缩%
gif(7)86217726780170742332722.49%14.28%6.14%3.11%2.71%1.98%
png(21)10897820544142863963346.73%54.48%38.29%18.85%36.37%13.11%
jpg(30)24978581563272104692104693.48%11.6%11.6%6.26%8.43%8.43%

PS: smush.itpagespeed的压缩服务会将gif格式转换成png格式再使用pngcrush工具压缩,所以压缩比总体可能会高于optimage方法。