Run Grunt task in Visual Studio Release Build with a bat file

Posted by Aligned on Geeks with Blogs See other posts from Geeks with Blogs or by Aligned
Published on Tue, 19 Aug 2014 06:21:02 GMT Indexed on 2014/08/19 22:21 UTC
Read the original article Hit count: 229

Filed under:

Originally posted on: http://geekswithblogs.net/Aligned/archive/2014/08/19/run-grunt-task-in-visual-studio-release-build-with-a.aspx

1. Add a BeforeBuild in your csproj file. Edit the xml with a text editor.
  <Target Name="BeforeBuild">
    <Exec Condition="'$(Configuration)' == 'Release'" Command="script-optimize.bat" />
  </Target>
 
2. Create the script-optimize.bat
REM "%~dp0" maps to the directory where this file exists
cd %~dp0\..\YourProjectFolder
call npm uninstall grunt
call npm uninstall grunt
call npm install --cache-min 604800 -g grunt-cli
call npm install --cache-min 604800

grunt typescript requirejs copy less:compile less:mincompile
This grunt command will compile typescript, run the requireJs optimizer, complie and minimize less.
3. Make it use the minified code when the Web.config compilation debug is set to false

<!-- These CustomCollectFiles actions are used so that the Scripts-Release folder/files are included
        when publishing even though they are not project references -->
  <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="Scripts-Release\**\*" />
  </ItemGroup>
  </Target>

That should be all you need to get a Grunt task to minify and combine JS (plus other tasks) in Visual Studio Release build with debug = false.

This is a great video of Steve Sanderson talking about SPAs, npm, Knockout, Grunt, Gulp, ect. I highly recommend it.

© Geeks with Blogs or respective owner