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

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
个人分类: js
上一篇利用css中的border生成三角,兼容包括IE6的主流浏览器
下一篇自己实现一个简单的Promise
想对作者说点什么? 我来说一句

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

关闭
关闭