I've noticed some culture differences between front-end and back-end javascripters.
Could you elaborate on those?
Grunt is a task runner. It's a general purpose utility, that happens to work well with JavaScript (client and server).
Our team first started using Grunt to concat Scala templates prior to compilation (in an old version of Play with an old JVM). Back then, we noticed that concatenating the Scala files reduced the amount of heap used during compilation. Never did figure out why.
Later, we started to use Grunt to minify and concat our Backbone code.
Currently, we use Grunt for both our server-side Node and client-side Angular.
Server-side we use Grunt to: 1.) Restart Node on file change, 2.) Run JSHint against both server-side and client-side JavaScript, 3.) Set some environment vars prior to starting Node, plus a few other small tasks.
Client-side we use Grunt to: 1.) Create a production build by minifying and concatenating JS, 2.) Minifying and concatenating CSS, Minifying HTML, plus some other minor tasks.
We also use Grunt to run the client and server test suite.
Basically, it's common practice to use Grunt (or Gulp, or another task runner) to assist with both client and server-side JS.
Once you familiarize yourself with the Grunt way of setting up tasks, it becomes trivially simple to obtain and run plugins for your tasks.
1. Runs unit tests any time source or test files change
2. Runs JsHint on the source any time it changes
3. Generates a static documentation site based on any edits I make to my markdown files
4. Brings up, tears down vagrant VMs which host a MongoDB (or whatever) instance
This makes development workflow really awesome. Just do "grunt watch" in a terminal, and you will always be able to see your tests go from fail to pass as you develop your (linty clean) code.
I have seen many others use (and mention the use of) Grunt to reboot the server on file change, this is one of those programing austerities I have not given up (yet).
[1] - Sample Gruntfile - https://github.com/sabhiram/nodejs-scaffolding/blob/master/G...
[2] - Grunt Plugins - http://gruntjs.com/plugins
"build": "npm run build-js && npm run build-css"
Ok I see. That's sort of a poor man's dependency checker.