使用yuicompressor.jar对js/css文件代码压缩
2015-11-28 13:54
671 查看
文章链接:使用yuicompressor.jar对js/css文件代码压缩
介绍
YUI Compressor是一个压缩js、css的工具,原文件越大 可被压缩的部分就越大,压缩后的文件几乎是原文件大小的一半,该工具下载下来是一个jar文件,因此其运行是需要依赖jre环境的,因此在使用该工具前请先配置好环境。
Cmd命令
如果你习惯使用cmd命令来运行jar,那么下边的YUI Help可能对你会有很大的帮助。![](http://derien.me/wp-content/uploads/2015/07/QQ%E6%88%AA%E5%9B%BE20150729103934.png)
命令:java –jar c:\yuicompressor-2.4.2.jar
我将yuicompressor.jar文件放在了C盘的根目录下,具体可以按照你的使用习惯去放置该文件,另外我用的版本是2.4.2。
使用yui对js/css进行压缩的时候,需要输入以下命令对指定的文件进行压缩:
翻译如下:
通用参数:
-h -–help 显示帮助信息
--type<js|css> 指定输入文件的文件类型
--charset<charset> 指定读取输入文件使用的编码
--line-break<column> 在指定的列后插入一个line-bread符号
-v –verbose 显示info和warn级别的信息
-o<file> 指定输出文件,默认输出的控制台
Javascript专用参数:
--nomunge 只压缩,不对局部变量进行混淆
--preserve-semi 保留所有的分号
--disable-optimizations 禁止优化
Java –jar c:\yuicompressor-2.4.2.jar –-type js –-charset utf-8
D:\test.js –o d:\test-min.js
在该段命令中,第二行的输出路径需要按照自己的习惯自行替换,另外该段命令按照上边YUI Help可以翻译成:
我想在jre环境下运行叫yuicompressor-2.4.2的jar文件,文件类型为js,使用utf-8编码格式,将位于D盘根目录下的test.js文件压缩到同一目录下,但是名字叫做test-min.js。
Java Project
如果你已经厌烦了cmd命令行,那么你可以使用java project的方式。首先创建一个java项目,在项目中导入如下代码:
import java.io.File; import java.io.IOException; import java.util.Date; /** * 工具类:利用yuicompressor来对js、css文件进行压缩 * * @author Derien * */ public class CompressorUtil { /** * main方法 * * @param args */ public static void main(String[] args) { /** * 压缩时,将这里的: * yuiPath替换成你机器上yuicompress文件的路径; * filePath替换成要压缩的文件或文件夹路径; * fileType替换成要压缩的文件类型(扩展名),只能是js、css两种类型; * encoding替换成你要读取文件的编码格式 */ String yuiPath = "c:\\yuicompressor-2.4.2.jar"; String filePath = "D:\\YUI"; String fileType = "js"; String encoding = "utf-8"; StringBuilder sb = new StringBuilder(); File file = new File(filePath); if (fileType.equalsIgnoreCase("JS")) { compressJS(yuiPath, sb, file, encoding); } if (fileType.equalsIgnoreCase("CSS")) { compressCSS(yuiPath, sb, file, encoding); } String[] res = sb.toString().split("/n"); Runtime runTime = Runtime.getRuntime(); Date startTime = new Date(); Long count = 0L; for (String cmd : res) { if (!cmd.trim().equals("")) { System.out.println(cmd); try { runTime.exec(cmd); count++; } catch (IOException e) { e.printStackTrace(); } } } Date endTime = new Date(); Long cost = endTime.getTime() - startTime.getTime(); System.out.println(fileType.toUpperCase() + "压缩完成,耗时:" + cost + "ms,共压缩文件个数:" + count); } /** * 压缩JS文件 */ public static void compressJS(String yuiPath, StringBuilder sb, File f, String encoding) { if (f.isDirectory()) { File[] files = f.listFiles(); // 如果某个文件夹是空文件夹,则跳过 if (files == null) { return; } for (File file : files) { compressJS(yuiPath, sb, file, encoding); } } else { String fileName = f.getName(); if (fileName.endsWith(".js") && !fileName.endsWith("-min.js")) { sb.append("java -jar "); sb.append(yuiPath); sb.append(" --type js --charset "); sb.append(encoding + " " + f.getPath()); sb.append(" -o " + f.getPath().replace(".js", "-min.js")); sb.append("/n"); } } } /** * 压缩CSS文件 */ public static void compressCSS(String yuiPath, StringBuilder sb, File f, String encoding) { if (f.isDirectory()) { File[] files = f.listFiles(); // 如果某个文件夹是空文件夹,则跳过 if (files == null) { return; } for (File file : files) { compressCSS(yuiPath, sb, file, encoding); } } else { String fileName = f.getName(); if (fileName.endsWith(".css") && !fileName.endsWith("-min.css")) { sb.append("java -jar "); sb.append(yuiPath); sb.append(" --type css --charset "); sb.append(encoding + " " + f.getPath()); sb.append(" -o " + f.getPath().replace(".css", "-min.css")); sb.append("/n"); } } } }
具体的变量参数请按照我上边的注释针对实际情况进行修改。
这种方法支持多文件的压缩,可以将需要进行压缩的文件全部放到一个目录文件夹下,对该文件夹下的文件进行压缩,切记每次执行仅支持同一类型的文件压缩。
更多文章,请查阅我的个人博客:De Rien
点击下载:yuicompressor-2.4.2.jar
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android学习笔记(二九):嵌入浏览器
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- Web布局连载——两栏固定布局(五)
- PropertyChangeListener简单理解
- JavaScript演示排序算法
- 插入排序