Java 使用 google closure-compiler 压缩JavaScript代码

import com.google.javascript.jscomp.*;
import com.google.javascript.jscomp.Compiler;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;

/**
 * 使用Google Closure Compiler对 JS 代码压缩
 * 下载地址:https://github.com/google/closure-compiler 
 * @author liuchang
 * @time 2014-7-9 下午08:13:27
 */

public class JsFormat {
	public void format() throws Exception{
		Compiler.setLoggingLevel(Level.INFO);
		Compiler compiler = new Compiler();
		
		CompilerOptions options = new CompilerOptions();
		//更加激进的重命名、移除垃圾代码、内联函数。
//		CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
		//只删除空白、注释。
//		CompilationLevel.WHITESPACE_ONLY.setOptionsForCompilationLevel(options);
		// 在 WHITESPACE_ONLY 基础上将局部变量和参数转成短名称。
		CompilationLevel.SIMPLE_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
		WarningLevel.VERBOSE.setOptionsForWarningLevel(options);
//		WarningLevel.DEFAULT.setOptionsForWarningLevel(options);
		
		// 原有文件
		List<SourceFile> externalJavascriptFiles = new ArrayList<SourceFile>();
		
		// 需要压缩的文件
		List<SourceFile> primaryJavascriptFiles = new ArrayList<SourceFile>();
		primaryJavascriptFiles.add(SourceFile.fromFile("E:\\IDPS.js"));
		
		compiler.compile(externalJavascriptFiles, primaryJavascriptFiles, options);
		
		// 输出到文件
		FileWriter fw = new FileWriter("E:/js-min.js");
		fw.write(compiler.toSource());
		fw.close();
	}
	
	public static void main(String[] arg) throws Exception {
		JsFormat format = new JsFormat();
		format.format();
	}
}

 

发表评论