2016-02-03 32 views
2

我有一個ASP.NET解決方案,我使用gulp(例如less-compilation)執行一些任務。在Visual Studio中,相應的gulp任務綁定到BeforeBuild事件,所以無論何時我構建解決方案時都會自動啓動。我可以從cake-build文件調用gulp嗎?

我正在試驗cake用於構建和打包解決方案。在構建解決方案時使用DotNetBuild()MSBuild()任務可以正常工作,但在構建期間不會執行吞噬任務。

似乎吞併(也可能是其他任務跑步者)不會自動「集成」在構建過程中。

蛋糕在編譯過程中是否支持調用gulp?
(當然,它應該理想地還原也一飲而盡本身(使用NPM /的package.json),如果它是不可用的。)

回答

2

UPDATE:現在有蛋糕運行咕嘟咕嘟任務的插件。你可以找到它here

至於爲什麼在Cake中使用MSBuild別名沒有調用BeforeBuild目標,我們不確定。請問您提出問題here以便我們討論。理想情況下,可以提供一個演示問題的示例項目,以便我們進行調查。

雖則回答你的整個問題...

無,目前,沒有蛋糕別名/加載項的支持運行咕嘟咕嘟任務作爲構建管道的一部分。這並不是說這不可能完成,只是它還沒有在我們的視線中。儘管如此,由於可以將任意C#編寫爲構建腳本的一部分,因此沒有理由不能生成一個流程來調用帶有必要參數的gulp來完成工作。

+1

謝謝加里。我提交了一個樣例項目的問題。 – M4N

+0

@ M4N非常感謝你,我們會盡可能地看看這個。 –

+0

你可能想看看我的編輯上面:-) –

4

注:這個答案是從 Cake issue response 由馬蒂亞斯·卡爾森複製(與他的許可)。


只是做了一個快速的樣子,所以我可能失去了一些東西,但檢查 的csproj文件時,BeforeBuild MSBuild的目標似乎是空的?

WebApplication1 Build Events

的Visual Studio 2015年有咕嘟咕嘟/咕嚕所以這 可能是什麼踢內置任務運行。

目前我們沒有關於NPM或咕嘟咕嘟別名(那會雖然是一個 偉大的插件),但你可以做的是通過StartProcess別名自己調用Gulp 。我性能稍微低於優化了你的build.cake

var target = Argument("target", "Default"); 

DirectoryPath solutionDir = MakeAbsolute(Directory("./")); 
FilePath solution = solutionDir.CombineWithFilePath("WebApplication1.sln"); 
DirectoryPath projectDir = solutionDir.Combine("WebApplication1"); 
FilePath lessOutput = projectDir.CombineWithFilePath("css/style.css"); 

Task("Default") 
    .Does(() => 
{ 
    NuGetRestore(solution); 

    if (FileExists(lessOutput)) 
    { 
    Information("Cleaning old less output {0}", lessOutput); 
    DeleteFile(lessOutput); 
    } 

    StartProcess("cmd", new ProcessSettings { 
    Arguments = "/c \"set CI=true && npm install && gulp compile-less\"", 
    WorkingDirectory = projectDir 
    }); 

    if (!FileExists(lessOutput)) 
    { 
    throw new Exception("Less failed to create " + lessOutput); 
    } 
    Information("Less created {0}", lessOutput); 

    MSBuild(solution); 
}); 

RunTarget(target); 

這裏假設你有全球的裝機節點&咕嘟咕嘟(您全球範圍內通過運行npm install -g gulp安裝咕嘟咕嘟 ),也這是5分鐘快速 和骯髒的,所以你會想要分割清理/恢復/更少分成 蛋糕任務。我設置了環境CI=true,因爲一些節點模塊 可能需要用戶在還原時進行交互。

丟棄的MSBuild /恢復的NuGet上面將輸出類似:

Cleaning old less output C:/temp/cake_issue_672/WebApplication1/WebApplication1/css/style.css 
[11:26:12] Using gulpfile C:\temp\cake_issue_672\WebApplication1\WebApplication1\gulpfile.js 
[11:26:12] Starting 'compile-less'... 
[11:26:13] Finished 'compile-less' after 29 ms 
Less created C:/temp/cake_issue_672/WebApplication1/WebApplication1/css/style.css 

這可能不是你工作的解決方案,但它「應該」 工作。

相關問題