At Mozilla's PDF.js, we looked at several build alternatives in 2011. The main problem was that they all required a learning curve (they all looked like a domain-specific language), and sometimes they were too limited for our needs.
Since we already did everything through Makefiles, what we wanted was a shell script/Make that worked out of the box in all platforms (Windows included). So we wrote ShellJS for Node.js:
It is now battle-tested in several Mozilla projects (PDF.js, Firefox OS, Butter.js, etc). Check it out, happy to answer questions/comments at @arturadib.
ShellJS is awesome. It's basically Unix shell commands for Node.js, which is excellent if you want to write a makefile equivalent in JavaScript.
If, on the other hand, you want to execute web developer-centric tasks like concatenation and minification, linting, running of unit tests in pure JavaScript or a headless WebKit instance, or any of the functionality the 90+ plugins I'm aware of provide, check grunt out.
Grunt also works on all platforms, and supports completely arbitrary JavaScript tasks. If you can write it, grunt will execute it.
And because grunt supports arbitrary JavaScript tasks, you can use ShellJS (or any other JavaScript) from within grunt.
I created a build tool for similar reasons, difference being that it's aimed at Cakefile users. It's goal is to be as simples as possible, support common tasks out of the box (minifying, compiling LESS/coffee/etc) and should work on Windows too:
I could see shelljs as a stand-alone executable using JSDB (http://jsdb.org) too, should be an easy port, cross-platform, much smaller and dependency-free.
I've used both Makefiles and Grunt for projects and I much prefer Grunt:
* I find the js syntax of gruntfiles much cleaner and harmonious with the js code I'm writing for my projects
* From what I've seen, Makefiles are meant to create output files - seems like Grunt can be set up more easily for things meant for display (linting, etc)
Supposedly Yeomen is supposed to drop soon, which- I'm just guessing- is a bunch of inits and tasks built on Grunt to accomplish more. Yeomen is out of Google.
Big node fan, hadn't seen this either. Side note, not criticising parent comment specifically, just thinking out loud: I still don't get why people question relevancy of submissions on sites like HN. Surely if its getting upvoted enough to hit the front page, the community finds value in it, right?
Not useful or common knowledge to you doesn't mean it's not useful or new for others. If you knew about it, and dislike it, what are you doing commenting here? If I had the same opinion I would have shrugged and told myself "Oh... grunt... again... Move along", not come in here to make a completely useless remark, which by the way obviously does not align with what the majority here thinks.
Try ShellJS. It works on all three platforms, and has been battle-tested in the build systems of several Mozilla projects (PDF.js, Firefox OS, Popcorn.js, etc).
Since we already did everything through Makefiles, what we wanted was a shell script/Make that worked out of the box in all platforms (Windows included). So we wrote ShellJS for Node.js:
https://github.com/arturadib/shelljs
It is now battle-tested in several Mozilla projects (PDF.js, Firefox OS, Butter.js, etc). Check it out, happy to answer questions/comments at @arturadib.