18

关于最近的一个项目,我一直在C#/ ASP.NET中工作我有一些相当复杂的JavaScript文件和一些漂亮的样式表。随着这些脚本资源的规模不断扩大,它当然会保持您的网页尽可能轻。我知道很多开发人员在调试完毕后将他们的JavaScript资源手动送入压缩机,然后部署他们的应用程序。脚本缩小和与MSBuild的持续集成

当谈到源代码管理和自动构建满足持续集成的世界时(谢谢CruiseControl.NET);手压缩根本就不行。维护源代码管理并提供压缩资源的唯一方法是将JS/CSS源代码的缩小版本保存在单独的目录结构中。然后在代码隐藏中只注册一组资源或其他资源。但是,如果开发人员对JS/CSS源进行更改,然后无法重新压缩并检入两个版本,则代码行现在不同步。更不用说不雅。

我在想,编写一个自定义可执行文件(如果尚不存在的话)对于CC.NET任务块来说是很好的,它可以在构建操作后找到并压缩目标目录中的所有JavaScript和CSS资源但是在asp.net发布到目标之前。这样,开发人员只能使用JS和CSS源,而用户只能获取缩小的资源。

是否有一个应用程序已经执行此任务,如果不是,我应该在构建服务器上安装什么类型的资源以使CC.NET执行?

(该closest question我可以在这里找到这一个要求楠,这是不是在我的情况选择。)

编辑: 戴夫·沃德现在有在他的网站上how to automatically minify in Visual Studio一个伟大的文章。

+0

...... – 2009-01-09 06:11:13

+3

不,我是指minify(http://en.wikipedia.org/wiki/Minify),但我认为它是一个或另一个12。我相信这两个术语是可以互换的。 – 2009-05-22 23:44:30

回答

24

MSBuildCommunityTasks Project有几个MSBuild任务可以做你正在寻找的东西,包括合并和JSCompress。

您可以将这些添加到AfterBuild目标中的MSBuild项目中,以允许项目在每次构建项目时执行此操作,并且不会出现任何不同步现象。然后,您的Web应用程序可以引用压缩版本进行运行,但开发人员将编辑完整版本。

除了MSBuild社区任务程序集外,服务器上不需要任何东西。你可以把这个程序集放在你自己的源代码树中,并从那里引用,你的CI构建应该获得该程序集以及它在构建时需要的所有东西。

+0

不错。我喜欢。 – 2008-11-10 20:03:33

+2

嘿,太棒了,我打算今晚把它写入StackOverflow,并且谷歌搜索出现在我们的网站上!如何去,所以!和好的答案,托德+1 – 2009-01-09 05:16:52

1

不是一个完美的答案,但如果您使用的是MVC4,他们已经将其作为一项新功能进行构建。运行调试配置时,它会输出包含注释等的单个文件,但当您切换到发布时,它会自动将页面引用绑定,缩小和更改为缩小文件。你可以为jquery和你自己的js设置单独的bundle。这适用于CSS和JS文件。

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

如果MVC4不为你工作,你也可以找到的NuGet包,可以帮助像这样的:通过缩小,我认为你的意思是尽量减少

https://www.nuget.org/packages?q=minify