5

使用yuicompressor.jar实现对js、css文件的代码压缩

 3 years ago
source link: https://blogread.cn/it/article/7506?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
您现在的位置首页 --> CSS/HTML --> 使用yuicompressor.jar实现对js、css文件的代码压缩

使用yuicompressor.jar实现对js、css文件的代码压缩

浏览:1886次  出处信息

   YUI Compressor是一个压缩js、css的工具,压缩后的文件几乎接近原文件的一半大小,该工具下载下来就是一个jar文件,它是用Java开发的,所以在运行的时候也是要依赖于jre环境,本文后面的介绍都是基于本机已经安装jre并且做好了配置的前提。

图1:yuicompressor help

   上图是我在Windows的命令行中查看到的yuicompressor的一些命令的提示信息,翻译成中文如下:

语法: java -jar yuicompressor-x.y.z.jar [options] [input file]
通用参数:
-h, --help 显示帮助信息
--type <js|css> 指定输入文件的文件类型
--charset <charset> 指定读取输入文件使用的编码
--line-break <column> 在指定的列后插入一个 line-bread 符号
-v, --verbose 显示info和warn级别的信息
-o <file> 指定输出文件。默认输出是控制台。
javascript专用参数:
--nomunge 只压缩, 不对局部变量进行混淆。
--preserve-semi 保留所有的分号。
--disable-optimizations 禁止优化。

   使用yuicompressor对js、css文件压缩的时候,首先将yuicompressor的jar文件下来下来,然后放在机器的某个位置(我下载的是yuicompressor-2.4.2.jar,放在的是C盘的根目录下,后面都是以此为例),然后就可以直接使用下面的命令对指定的文件进行压缩:

java -jar c:\yuicompressor-2.4.2.jar --type js --charset utf-8 d:\test01.js -o d:\test-min.js

   上面的代码就是实现的对D盘下的test01.js这个文件进行压缩,压缩后保存在原位置,命名为test-min.js。基于这个实现原理,我写了下面的Java代码,这样只要运行该Java代码的main方法,并且修改其中的一些参数,就可以很方便的实现对某个目录下的所有的js、css的递归循环压缩,也可以直接指定文件名进行指定文件的压缩。

   代码如下:

import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
* 工具类:利用yuicompressor来对js、css文件进行压缩
*
* @author YEDWARD
*
*/
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 = "E:\\workspace\\MYAPP\\WebContent\\app";
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");
}
}
}
}

   直接复制上面代码放到编译器中编译运行,并且按需替换掉main方法中的yuiPath、filePath、fileType、encoding即可,压缩需要一段时间,所有的文件都压缩成功后,会出现类似如下图2所示的结果:

图2:压缩完成提示

   这样就OK了,记得要先下载yuicompressor.jar文件,保存到本机,并且记得修改上面代码中的几个参数,本文后面会提供一个yuicompressor-2.4.2.jar版本,这是目前最新的,建议以后使用时下最新的版本进行压缩。

   YUI Compressor-2.4.2下载地址:rar.pngyuicompressor-2.4.2.zip

   下面,愉快的开始压缩吧!

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK