我有一个ASP.NET解决方案,我使用gulp执行一些任务(例如,编译较少)。在Visual Studio内部,相应的gulp-task绑定到BeforeBuild事件,因此每当我构建解决方案时它都会自动启动。
我正在尝试cake来构建和打包解决方案。虽然使用DotNetBuild()
或MSBuild()
任务构建解决方案可以正常工作,但在构建期间不会执行gulp任务。
似乎gulp(可能还有其他任务运行者)不会在构建过程中自动“集成”。
蛋糕在构建过程中是否支持调用gulp? (当然,如果它不可用,它理想情况下也应该恢复gulp本身(使用npm / package.json)。)
答案 0 :(得分:5)
注意:此答案是从 Cake issue response 由Mattias Karlsson(经他许可)。
只是快速查看,所以我可能会遗漏一些东西,但检查
csproj文件,BeforeBuild
MSBuild目标似乎是空的?
Visual Studio 2015有一个内置的Gulp / Grunt任务运行器,所以这个 可能是什么在踢。
目前我们没有NPM或Gulp的别名(这将是一个
虽然很棒,但你可以做的就是自己调用Gulp
通过StartProcess
别名。我在下面轻轻调整了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);
这假设你有Node& Gulp全球安装(你安装Gulp
全局通过运行npm install -g gulp
),也快5分钟
而且很脏,所以你想要将clean / restore / less划分为单独的
蛋糕任务。我设置了环境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
这可能不是您工作的解决方案,但它“应该” 工作
答案 1 :(得分:2)
更新:现在有一个用于运行Gulp任务的Cake插件。你可以找到它here
至于为什么在Cake中使用MSBuild Alias没有调用BeforeBuild目标,我们不确定。我可以要求您提出问题here,以便我们进行讨论。理想情况下,可以提供演示问题的示例项目,以便我们进行调查。
尽管回答你的整体问题......
不,目前,没有Cake Alases / Addin支持将Gulp Tasks作为构建管道的一部分运行。这并不是说不能做到这一点,只是说它还没有出现在我们的雷达上。
话虽如此,鉴于您可以将任意C#编写为构建脚本的一部分,因此没有理由不能生成一个进程来调用gulp并使用必要的参数来完成工作。