注:這個答案是從 Cake issue response 由馬蒂亞斯·卡爾森複製(與他的許可)。
只是做了一個快速的樣子,所以我可能失去了一些東西,但檢查 的csproj文件時,BeforeBuild
MSBuild的目標似乎是空的?
的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
這可能不是你工作的解決方案,但它「應該」 工作。
謝謝加里。我提交了一個樣例項目的問題。 – M4N
@ M4N非常感謝你,我們會盡可能地看看這個。 –
你可能想看看我的編輯上面:-) –