

使用yuicompressor.jar实现对js、css文件的代码压缩
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.

使用yuicompressor.jar实现对js、css文件的代码压缩
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下载地址:yuicompressor-2.4.2.zip
下面,愉快的开始压缩吧!
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:叶德华的博客 来源: 叶德华的博客
- 标签: yuicompressor 压缩
- 发布时间:2015-06-04 10:25:43
Recommend
-
33
最近遇到一个日志备份 io 过高的问题,业务日志每十分钟备份一次,本来是用 Python 写一个根据规则扫描备份日志问题不大,但是随着业务越来越多,单机上的日志文件越来越大,文件数量也越来越多,导致每每备份的瞬间 io 阻塞严重, CPU 和...
-
45
奇技 · 指南 JAR文件是基于ZIP文件格式的一种文件格式,用来将许多文件整合成一个文件。一个JAR文件本质上是包含可选目录META-INF的zip文件,可以通过命令行jar工具或者在Java平台上使用java.ut...
-
9
收集箱
-
14
java打包为可执行jar文件 2016-02-07 看到网上不少教程,而且如果安装了java的话自带的jar也有帮助文档,但是不知道为什么都讲不清楚的感觉。 winda...
-
5
V2EX › Java jar 文件怎么转换成 exe 文件 woshichuanqilz · 22 小时 30 分钟前 · 2035...
-
6
将jar内的文件复制到jar包外的同级目录下 祈雨的博客 2018-07-17
-
5
Java 以编程方式创建JAR文件-51CTO.COM Java 以编程方式创建JAR文件 作者:指北君 2022-07-22 08:18:28 为了简化创建JAR文件的过程,我们创建了一个单独的、普通的旧Java对象(POJO...
-
9
09月18, 2020 0 comments 如何修...
-
11
Java替换jar包中的文件 Javatlanyan帮朋友一个小忙,因此研究了一下
-
2
更新jar包或者jar包中的文件 2024-01-17 1 分钟阅读 jar包可以当作一个zip包来看待。 jar文件:/home/resin.jar 需要更新包中com/caucho/server/port/Port.class类文件 方法1,直接更新:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK