如今網站都在說優化,壓縮js和css文件就成了最基本的一種方法,js和css壓縮有很多方法,很多網站也提供了這樣的功能,也可以用YUI提供的包手動壓縮,但是這都不效率啊,能不能在vs生成部署包的時候把js和css壓縮好呢?當然可以。
首先請下載YUI Compressor,YUI Compressor是個Java庫,你需要安裝Java的運行環境,請點這里下載。(關於Java環境的配置請大家自行google,另外YUI Compressor是github的鏈接,應該被牆了,請自備爬梯工具)。
新建一個批處理文件,代碼如下:
@echo off if "%1" == "" goto exit if "%2" == "" goto exit pushd "%1" echo 正在壓縮Css文件 for /r %%i in (*.css) do call "D:\Program Files\Java\jre\bin\java.exe" -jar G:\tools\yuicompressor-2.4.7.jar -o %%i %%i echo 正在壓縮js文件 for /r %%i in (*.js) do call "D:\Program Files\Java\jre\bin\java.exe" -jar G:\tools\yuicompressor-2.4.7.jar -o %%i %%i ::call "D:\Program Files\7-Zip\7z.exe" a %2.7z -r PackageTmp pause :exit exit
批處理的第一個參數接收項目生成部署包的路徑,vs默認路徑是:\obj\Release,第二個參數是生成壓縮包的名字(這里是生成的7z的壓縮包,如果需要生成,請把call那行的注釋去掉)。
然后就是編輯你的項目文件,比如Test.csproj,打開它,在根路徑下添加如下代碼:
<Target Name="Compressor" BeforeTargets="Package" Condition="'$(ConfigurationName)'=='Release'"> <Message Text="Starting Compress Javascript Files and Css Files" /> <Exec Command="call F:\Users\Documents\Compressor.bat $(ProjectDir)obj\$(ConfigurationName)\Package\ $(ProjectName)" /> </Target>
稍微解釋下這段代碼,BeforeTargets="Package"是在打包Web文件前調用壓縮,Condition="'$(ConfigurationName)'=='Release'",只有Release模式下才壓縮,你不會想一邊Debug一邊壓縮js和css文件吧。Command命令中,請自行替換剛才建立的批處理文件的路徑,$(ProjectDir)是項目路徑,$ConfigurationName是當前的生成配置,$ProjectName是項目名稱。
現在在項目上右擊,生成部署包,然后看看js和css文件是不是都已經壓縮了呢?