Javascript 脚本缩小和与MSBuild的持续集成

Javascript 脚本缩小和与MSBuild的持续集成,javascript,msbuild,continuous-integration,build-automation,minify,Javascript,Msbuild,Continuous Integration,Build Automation,Minify,在我最近在C#/ASP.NET中进行的一个项目中,我有一些相当复杂的JavaScript文件和一些漂亮的样式表。当然,随着这些脚本资源的增长,它会使您的网页尽可能地轻。我认识许多开发人员,他们在调试后将JavaScript资源手动输入压缩器,然后部署应用程序 在持续集成的令人满意的世界中,当涉及到源代码控制和自动化构建时(谢谢);用手按压根本不行。维护源代码控制和提供压缩资源的唯一方法是将JS/CSS源代码&它们的小型兄弟保存在一个单独的目录结构中。然后只在代码隐藏中注册一组或另一组资源。然而,

在我最近在C#/ASP.NET中进行的一个项目中,我有一些相当复杂的JavaScript文件和一些漂亮的样式表。当然,随着这些脚本资源的增长,它会使您的网页尽可能地轻。我认识许多开发人员,他们在调试后将JavaScript资源手动输入压缩器,然后部署应用程序

在持续集成的令人满意的世界中,当涉及到源代码控制和自动化构建时(谢谢);用手按压根本不行。维护源代码控制和提供压缩资源的唯一方法是将JS/CSS源代码&它们的小型兄弟保存在一个单独的目录结构中。然后只在代码隐藏中注册一组或另一组资源。然而,若开发人员对JS/CSS源代码进行了更改,但未能对其进行重新压缩并签入两个版本,则说明代码行现在不同步。更不用说不雅了

我认为最好为CC.NET任务块编写一个自定义可执行文件(如果还不存在的话),它将在构建操作之后,但在asp.NET发布到目标之前,查找并压缩目标目录中的所有JavaScript和CSS资源。这样,开发人员将只在JS和CSS源代码上工作,而用户将只获得缩小的资源

是否有已经执行此任务的应用程序?如果没有,我应该在生成服务器上安装什么类型的资源,以便让CC.NET执行?

(我可以在这里找到这个必需的NAnt,这在我的情况下不是一个选项。)

编辑: Dave Ward现在在他的网站上有一篇很棒的文章。

有一些MSBuild任务可以完成您想要的任务,包括合并和JSCompress

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

除了MSBuild社区任务程序集,服务器上不需要其他任何东西。您可以将此程序集放在您自己的源代码树中并从中引用,您的CI生成应该在生成时获得该程序集及其所需的所有内容。

另一个用于MSBuild的JS(和CSS!)压缩库:


这是一个基于java的.NET端口。

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

如果MVC4不适合您,您还可以在Nuget上找到有帮助的包,例如:


嘿,我今晚要把这个放到StackOverflow中,真是太神奇了,谷歌搜索打开了我们的网站!干得好,所以!答案很好,Todd+1I必须补充一点,msbuild任务社区项目是一流的。我在构建过程中使用jscompress。请注意,您必须将jquery.min文件从压缩中删除,因为它会阻塞它。仅供参考:MSBuildTasks项目已移动到GitHub:我想您的意思是最小化…否。我的意思是minify(),但我认为它是一个或一打另一个。我相信这两个术语可以互换。很高兴找到贾罗德。我将要看一个自动化的CSS缩微器,以纳入自动构建。这是一个很好的发现。Jarrod,你们能再看看YUICompressor的.NET端口(上面的链接)吗。昨天,一个新版本被删除了。上次你们在播客上说你们有问题。希望查看此构建是否与您的部署计划配合使用。。。如果没有,请发布原因/内容等:)是的,现在比2008年发布这个问题时有更多的选择。