Выполнение задач Gulp только при публикации веб-приложения ASP.NET 5

Как лучше всего выполнять задачи Gulp только при публикации веб-приложения ASP.NET 5? Нужно ли добавлять пользовательское событие сборки который выполняет команду Gulp?

cmd.exe /c gulp -b "C:\Projects\ProjectName\Source\ProjectName.Web" --gulpfile "C:\Projects\ProjectName\Source\ProjectName.Web\Gulpfile.js" publish

Или, предпочтительно, есть ли способ связать задачу Gulp с целью BeforePublish через Task Runner Explorer?

Любые предложения будут очень признательны.


person Jonathan Freeland    schedule 07.08.2015    source источник


Ответы (2)


ОБНОВЛЕНИЕ 2 .NET Core CLI больше не поддерживает "предварительную упаковку". Сценарий "посткомпиляция" может работать лучше.

https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#scripts

Исходный ответ

Добавьте его в раздел "скрипты" project.json.

project.json: документация по скриптам

{
...
  "scripts": {
    "prepack": "gulp publish",
  }
...
}
person natemcmaster    schedule 11.08.2015
comment
Если бы я хотел, чтобы он запускался перед публикацией, подключился бы я к действию prepack? - person Jonathan Freeland; 13.08.2015
comment
На самом деле, цель предварительной сборки может быть лучше, если вы используете инструменты VS для публикации. - person natemcmaster; 13.08.2015
comment
если вы хотите запустить перед публикацией, я думаю, что prepublish - это действие, которое нужно использовать... - person Pawel; 14.07.2016

Создайте цель в файле профиля публикации (файл *.pubxml все еще существует в проектах asp.net 5). Файл pubxml — это файл сборки, и он добавляется в ваш файл сборки proj. Таким образом, он будет запускаться только тогда, когда вы публикуете с использованием этого конкретного профиля.
Я бы использовал цель BeforeBuild, чтобы она была более общей (восстановление всех пакетов, все инъекции js/css в представлениях и т. д. Я бы сделал их до начнется сборка) и добавьте туда команду gulp:

<Target Name="BeforeBuild">
   <Exec Command="call gulp" WorkingDirectory="$(ProjectDir)" />
</Target>

Это будет работать независимо от того, публикуете ли вы из Visual Studio или с помощью MSBuild со своего компьютера для сборки.

person Liviu Costea    schedule 07.08.2015