VS发布Web时自动调用YUICompressor批量压缩JS、CSS
2013-03-06 18:12
357 查看
在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生成/发布过程。
内容如下:
说明:
1 在这个MSBUILD构建文件中使用<ItemGroup>元素来选取需要压缩的文件集合,来代替上例中的bat文件。在后面的Exec任务使用%(JavaScriptFiles.Identity)来表示选取集合中当前执行压缩的单个文件。其中$(ProjectDir)和$(_PackageTempDir)是MSBuild预定义的属性,分别表示项目根目录位置和相对项目根目录的临时打包文件的位置。
2 使用<PropertyGroup>元素来定义yuicompressor.jar文件的位置,在后面Exec 任务中使用$(YUICompressor)来获取值。
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)来获取值。
相关文章推荐
- Web项目发布 采用gulp压缩 JS CSS CSHTML ASPX HTML Image 给JS CSS自动添加版本号 强制浏览器刷新缓存
- WF工作流与Web服务的相互调用 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- 根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
- VS C# WebApi 发布,部署到IIS上及数据库权限相关问题
- vs 2005 web.config不能自动生成的问题
- VS2015 使用 Web Deploy 发布网站到 WindowsServer2008 R2服务器详解
- BridgeWebView的简单使用,自动调用js的代码
- 判断浏览器类型屏幕分辨率自动调用不同CSS文件
- Eclipse中将web项目自动发布到Tomcat webapps下
- 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
- VS2010之– Web Development(四)-将WebApplication打包发布到IIS
- [转] ASP.NET WEB API程序在VS启动或发布到IIS后启动后发生 - Could not load file or assembly 'System.Web.Http.WebHost’异常,无法正常访问
- 根据判断PC浏览器类型和手机屏幕像素自动调用不同CSS的代码
- B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传)
- VS2015发布web应用的时候带有.cs源代码
- VS2015 使用 Web Deploy 发布网站到 WindowsServer2008 R2服务器详解
- 【翻译】CSS Animations VS the Web Animations API:案例学习
- VS2013创建和调用Web服务
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- 用myeclipse自动发布web程序