If you're using grunt in a powershell script for continues integration you might run into issues with the error output. It's because of a bug regarding subprocess and stdout flushing in subprocess
Solution: Instead of writing directly to stdout we should pipe all output to a file, use the windows command type to output it and then delete the file. Like this.
grunt build --no-color > grunt.tmp type grunt.tmp del grunt.tmp
Why? When a subprocess breaks with an error is has not yet flushed all errors to the output since it will be done async. But the father process will kill the process and discard what ever it says afterwards. Which leaves us in a annoying state since why don't know why something failed.
But when we pipe the output to a file the node process will not do it async and the stdout will be sent to the father process before the error code.