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