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

不安装node、npm,直接使用uglify批量压缩js文件

2014-05-20 12:54 627 查看
1、从node官网下载binary文件 http://nodejs.org/download/

2、再从uglify在git的主页下载zip压缩包 https://github.com/mishoo/UglifyJS
如下图:



3、从解压出的文件中拿出uglify-js.js和lib目录

4、再创建一个js文件,在里面使用uglify

代码如下:

修改第四行调用scanDir方法中的路径参数为要压缩的目标路径即可

var fs = require("fs");
var parser = require("./uglify-js").parser;
var uglify = require("./uglify-js").uglify;

scanDir("./js");

function scanDir(rootPath) {
//读取目录
fs.readdir(rootPath, function(dirErr, files){
if( !dirErr ){
files.forEach(function(fileName){
//当前文件路径
var tmpPath = rootPath + "/" + fileName;
//获取文件状态
fs.stat(tmpPath, function(statErr, stat){
if( statErr ){
console.log("stat error:" + statErr);
}
//是个目录
else if( stat.isDirectory() ){
scanDir(tmpPath);
}
else {
//是js文件
if(fileName.match(/([\.]+).js$/i)){
compressFile(tmpPath);
}
}
});
});
}
else
console.log("dir error");
})
}
function compressFile(path){
buildOne(path,path);
}
function buildOne(flieIn, fileOut) {
var origCode = fs.readFileSync(flieIn, 'utf8');
var ast = parser.parse(origCode);
ast = uglify.ast_mangle(ast);
ast = uglify.ast_squeeze(ast);
var finalCode = uglify.gen_code(ast);
console.log("compressed:" + fileOut);
fs.writeFileSync(fileOut, finalCode, 'utf8');
}


5、用node运行这个js文件,就能把指定目录下的全部js压缩了。

(注意:因为代码中是压缩结果直接覆盖原文件了,所以压缩前最好把整个目录复制一份出来压缩。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 压缩 uglify