2016-02-03 4 views
2

У меня есть решение ASP.NET, где я выполняю некоторые задачи, используя gulp (например, less-compilation). Внутри Visual Studio соответствующая задача gulp привязана к событию BeforeBuild, поэтому он автоматически запускается всякий раз, когда я создаю решение.Могу ли я вызвать gulp из файла для создания торта?

Я экспериментировал с cake для сборки и упаковки решения. При построении решения работает отлично, используя либо задачи DotNetBuild(), либо MSBuild(), задачи gulp не выполняются во время сборки.

Кажется, что gulp (и, вероятно, другие бегущие задачи) не интегрируются автоматически в процесс сборки.

Может ли пирог каким-то образом поддерживать глоток во время сборки?
(Конечно, в идеале должен также восстановить сам глотку (с помощью NPM/package.json), если он не доступен.)

ответ

2

UPDATE: Существует в настоящее время надстройки для торта для запуска глотка задач. Вы можете найти его here

Что касается того, почему использование MSBuild Alias ​​в Cake не вызывает цель BeforeBuild, мы не уверены. Могу ли я попросить вас поднять вопрос here, чтобы мы могли обсудить его. В идеале примерный проект, демонстрирующий проблему, может быть предоставлен, чтобы мы могли исследовать.

Чтобы ответить на общий вопрос, хотя ...

Нет, в настоящее время нет Псевдонимов Cake/Addin о том, что поддерживает работу глотка задачи в качестве части трубопровода сборки. Это не значит, что этого не может быть сделано, просто потому, что он еще не был на нашем радаре.

Сказав это, учитывая, что вы можете написать любой произвольный C# в качестве части вашего скрипта сборки, нет причин, по которым вы не могли бы вызвать процесс, чтобы вызвать gulp с необходимыми аргументами для выполнения работы.

+1

Спасибо, Гэри. Я представил вопрос с образцом проекта. – M4N

+0

@ M4N большое спасибо, мы посмотрим на это, когда сможем. –

+0

Возможно, вы захотите проверить мое редактирование выше :-) –

4

Примечание: Этот ответ был скопирован с Cake issue response Маттиас Карлссон (с его разрешения).


Просто сделал быстрый взгляд, так что я мог бы быть что-то отсутствует, но проверка файла csproj, то MSBuild целевой BeforeBuild кажется пустым?

WebApplication1 Build Events

Visual Studio 2015 имеет встроенное бегун задач для Глотка/Grunt так это может быть то, что ноги в.

В настоящее время у нас нет псевдонимов для НОГО или Глотка (что бы но большое дополнение), но что вы могли бы сделать, это вызвать Gulp самостоятельно через псевдоним StartProcess.Я подправил свой build.cake slighly ниже:

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); 

Это предполагает, что вы установили узел & Глотка глобально (установки Gulp глобально через работает 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 

Это не может быть решением, которое вы работали на, но «должен» работы.

Смежные вопросы