Reputation: 4945
What would be the best way to execute Gulp tasks only when publishing an ASP.NET 5 web application? Do I need to add a custom build event that executes a Gulp command?
cmd.exe /c gulp -b "C:\Projects\ProjectName\Source\ProjectName.Web" --gulpfile "C:\Projects\ProjectName\Source\ProjectName.Web\Gulpfile.js" publish
Or, preferably, is there a way to bind a Gulp task to the BeforePublish
target via the Task Runner Explorer?
Any suggestions would be very appreciated.
Upvotes: 10
Views: 3934
Reputation: 26823
UPDATE 2 .NET Core CLI doesn't support "prepack" any more. A "postcompile" script may work better.
https://learn.microsoft.com/en-us/dotnet/articles/core/tools/project-json#scripts
Original Answer
Add it to your "scripts" section of project.json
project.json: Scripts documentation
{
...
"scripts": {
"prepack": "gulp publish",
}
...
}
Upvotes: 4
Reputation: 3794
Create the target in your publish profile file (the *.pubxml file still exists in asp.net 5 projects). The pubxml file is a build file and it is added to your proj build file. This way it would only be ran when you publish using that specific profile.
I would use BeforeBuild target to be more generic (all the packages restore, all the injection of js/css in views etc I would do them before the build would start) and add there the gulp command:
<Target Name="BeforeBuild">
<Exec Command="call gulp" WorkingDirectory="$(ProjectDir)" />
</Target>
This would work no matter if you publish from Visual Studio or with MSBuild from your build machine.
Upvotes: 7