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(); } }