65.9K
CodeProject is changing. Read more.
Home

Run Grunt Task in Visual Studio Release Build with a bat File

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Aug 22, 2014

CPOL
viewsIcon

7350

Run Grunt Task in Visual Studio Release Build with a bat File

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, compile 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, etc. I highly recommend it.