VS發布Web時自動調用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了

 

2013.3.17更新:

VS2010中沒有pubxml文件,可以在項目的根目錄下創建一個{ProjectName}.wpp.targets文件,如果你的項目文件名是WebFromApplication.csproj那么就是WebFromApplication.wapp.targets。它是一個MSBuild 構建文件(pubxml文件也是一個MSBuild構建文件),我們可以使用它來擴展Visual Studio生成/發布過程。

內容如下:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<PropertyGroup>
<YUICompressor>E:\工具\yuicompressor\yuicompressor.jar</YUICompressor>
</PropertyGroup>
<ItemGroup>
<JavaScriptFiles Include="$(ProjectDir)$(_PackageTempDir)\**\*.js"/>
</ItemGroup>
<Target Name="Compressor" AfterTargets="CopyAllFilesToSingleFolderForPackage" >
<Message Importance="high" Text="YUICompressor JavaScriptFiles" ></Message>
<Exec Command="java.exe -jar $(YUICompressor) -o %(JavaScriptFiles.Identity) %(JavaScriptFiles.Identity)" />
</Target>
</Project>

說明:

1 在這個MSBUILD構建文件中使用<ItemGroup>元素來選取需要壓縮的文件集合,來代替上例中的bat文件。在后面的Exec任務使用%(JavaScriptFiles.Identity)來表示選取集合中當前執行壓縮的單個文件。其中$(ProjectDir)和$(_PackageTempDir)是MSBuild預定義的屬性,分別表示項目根目錄位置和相對項目根目錄的臨時打包文件的位置。

2 使用<PropertyGroup>元素來定義yuicompressor.jar文件的位置,在后面Exec 任務中使用$(YUICompressor)來獲取值。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM