位置:海鸟网 > IT > ASP.NET >

VS调用YUICompressor批量压缩JS、CSS

在Visual Studio中通过修改发布配置文件,可以在发布Web时自动调用YUICompressor批量压缩项目中JS和CSS。

这种方式的优点,一是不需要在项目的js、css文件夹中单独建立debug子文件夹来存放未经压缩的文件,二是使用debug模式发布时不会进行压缩方便调试。具体方法如下:

1 安装JRE,下载YUICompressor,并解压(如:E:\工具\yuicompressor)

2 新建Compressor.bat文件内容为:

@echo off
if "%1" == "" goto exit
pushd "%1"
echo 正在压缩Css文件
for /r %%i in (*.css) do call "java.exe" -jar E:\工具\yuicompressor\yuicompressor.jar -o %%i %%i
echo 正在压缩js文件
for /r %%i in (*.js) do call "java.exe" -jar E:\工具\yuicompressor\yuicompressor.jar -o %%i %%i
:exit
exit


3 修改项目的发布配置文件, 项目的发布配置文件名为 <profilename>.pubxml,位于项目文件夹下的properties\PublishProfiles文件夹

增加下面的内容:

<Target Name="YUICompressor" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="'$(ConfigurationName)'=='Release'">
<Message Text="调用YUICompressor压缩CSS、JS" Importance="high" />
<Exec Command="call E:\工具\Compressor.bat $(ProjectDir)obj\$(ConfigurationName)\Package\" />
</Target>

注: E:\工具\Compressor.bat路径根据需要替换。

完成上面的工作后在“解决方案资源管理器”中右击要发布的项目点击“发布”后就可以在项目发布文件夹中看到已经压缩过的CSS、JS了。

YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发。

使用方法:

//压缩JS
java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 -v src.js > packed.js
//压缩CSS
java -jar yuicompressor-2.4.2.jar --type css --charset utf-8 -v src.css > packed.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 禁止优化。

举例:

将yuicompressor-2.4.2.jar 放在c:下,将editor.js放在c:盘下。

将editor.js进行压缩

命令为:

C:\java -jar yuicompressor-2.4.2.jar editor.js -o editor2.js

参数说明:

yuicompressor-2.4.2.jar 为工具包jar

editor.js为要压缩的js

-o editor2.js为压缩完成后的文件名

压缩率:

对resources下js文件夹里163个js文件进行压缩

压缩前4.13MB

压缩后2.89MB

混淆率:

较高

一个windows下的批量处理脚本:

@echo off

::设置YUI Compressor启动目录

SET YUIFOLDER=C:

::设置你的JS和CSS根目录,脚本会自动按树层次查找和压缩所有的JS和CSS

SET JSFOLDER=D:\1

echo 正在查找 JavaScript, CSS ...

chdir /d %JSFOLDER%

for /r . %%a in (*.js *.css) do (

@echo 正在压缩 %%~a ...

@java -jar %YUIFOLDER%\yuicompressor-2.4.2.jar --charset UTF-8 %%~fa -o %%~fa

)

echo 完成!

pause & exit