在Visual Studio中通過修改發(fā)布配置文件,可以在發(fā)布Web時自動調(diào)用YUICompressor批量壓縮項目中JS和CSS。
這種方式的優(yōu)點,一是不需要在項目的js、css文件夾中單獨建立debug子文件夾來存放未經(jīng)壓縮的文件,二是使用debug模式發(fā)布時不會進行壓縮方便調(diào)試。具體方法如下:
1 安裝JRE,下載YUICompressor,并解壓(如:E:\工具\yuicompressor)
2 新建Compressor.bat文件內(nèi)容為:
@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 修改項目的發(fā)布配置文件, 項目的發(fā)布配置文件名為 <profilename>.pubxml,位于項目文件夾下的properties\PublishProfiles文件夾
增加下面的內(nèi)容:
<Target Name="YUICompressor" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="'$(ConfigurationName)'=='Release'">
<Message Text="調(diào)用YUICompressor壓縮CSS、JS" Importance="high" />
<Exec Command="call E:\工具\Compressor.bat $(ProjectDir)obj\$(ConfigurationName)\Package\" />
</Target>
注: E:\工具\Compressor.bat路徑根據(jù)需要替換。
完成上面的工作后在“解決方案資源管理器”中右擊要發(fā)布的項目點擊“發(fā)布”后就可以在項目發(fā)布文件夾中看到已經(jīng)壓縮過的CSS、JS了。
YUI Compressor 是一個用來壓縮 JS 和 CSS 文件的工具,采用Java開發(fā)。
使用方法:
//壓縮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
通用參數(shù):
-h, --help 顯示幫助信息
--type <js|css> 指定輸入文件的文件類型
--charset <charset> 指定讀取輸入文件使用的編碼
--line-break <column> 在指定的列后插入一個 line-bread 符號
-v, --verbose 顯示info和warn級別的信息
-o <file> 指定輸出文件。默認輸出是控制臺。
javascript專用參數(shù):
--nomunge 只壓縮, 不對局部變量進行混淆。
--preserve-semi 保留所有的分號。
--disable-optimizations 禁止優(yōu)化。
舉例:
將yuicompressor-2.4.2.jar 放在c:下,將editor.js放在c:盤下。
將editor.js進行壓縮
命令為:
C:\java -jar yuicompressor-2.4.2.jar editor.js -o editor2.js
參數(shù)說明:
yuicompressor-2.4.2.jar 為工具包jar
editor.js為要壓縮的js
-o editor2.js為壓縮完成后的文件名
壓縮率:
對resources下js文件夾里163個js文件進行壓縮
壓縮前4.13MB
壓縮后2.89MB
混淆率:
較高
一個windows下的批量處理腳本:
@echo off
::設(shè)置YUI Compressor啟動目錄
SET YUIFOLDER=C:
::設(shè)置你的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