YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发。
<dependency> <groupId>com.yahoo.platform.yui</groupId> <artifactId>yuicompressor</artifactId> <version>2.4.8</version> </dependency>
package com.pinhuba.jsoup; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.Reader; import java.io.Writer; import org.junit.Test; import org.mozilla.javascript.ErrorReporter; import org.mozilla.javascript.EvaluatorException; import com.yahoo.platform.yui.compressor.CssCompressor; import com.yahoo.platform.yui.compressor.JavaScriptCompressor; public class JsCompressor { // 要处理的目录 File dir = new File("D:\\js"); int linebreakpos = -1; boolean munge = true; boolean verbose = false; boolean preserveAllSemiColons = false; boolean disableOptimizations = false; @Test public void testMain() throws Exception { checkFile(dir); } public void checkFile(File file) throws Exception { if (file.isFile()) { jsCompressor(file); return; } File[] files = file.listFiles(); if (files == null || files.length == 0) return; for (File f : files) { if (file.isFile()) { jsCompressor(file); continue; } checkFile(f); } } public void jsCompressor(File file) throws Exception { String fileName = file.getName(); System.out.println(fileName); if (fileName.endsWith(".js") == false && fileName.endsWith(".css") == false) { return; } Reader in = new FileReader(file); String filePath = file.getAbsolutePath(); File tempFile = new File(filePath + ".tempFile"); Writer out = new FileWriter(tempFile); if (fileName.endsWith(".js")) { JavaScriptCompressor jscompressor = new JavaScriptCompressor(in, new ErrorReporter() { public void warning(String message, String sourceName, int line, String lineSource, int lineOffset) { if (line < 0) { System.err.println("\n[WARNING] " + message); } else { System.err.println("\n[WARNING] " + line + ':' + lineOffset + ':' + message); } } public void error(String message, String sourceName, int line, String lineSource, int lineOffset) { if (line < 0) { System.err.println("\n[ERROR] " + message); } else { System.err.println("\n[ERROR] " + line + ':' + lineOffset + ':' + message); } } public EvaluatorException runtimeError(String message, String sourceName, int line, String lineSource, int lineOffset) { error(message, sourceName, line, lineSource, lineOffset); return new EvaluatorException(message); } }); jscompressor.compress(out, linebreakpos, munge, verbose, preserveAllSemiColons, disableOptimizations); } else if (fileName.endsWith(".css")) { CssCompressor csscompressor = new CssCompressor(in); csscompressor.compress(out, linebreakpos); } out.close(); in.close(); file.delete(); tempFile.renameTo(file); tempFile.delete(); } }
发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)