README.md

grunt

Grunt is a task-based command line build tool for JavaScript projects.

Grunt is currently in beta. While I'm already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and make suggestions or report bugs!

Be sure to read the getting started guide, which is a complete guide to configuring grunt for your project. In addition, check out the example gruntfiles which highlight a number of fairly common configurations.

In addition to the built-in tasks, you can create your own tasks. Don't like a built-in task's default behavior? Override it. Check out the grunt API documentation and the built-in tasks source for everything you need to know about creating custom tasks.

Doing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that's maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.

Being primarily a JavaScript developer, I decided to use Node.js and npm because the dependencies I most care about (JSHint and UglifyJS) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.

Grunt is available as an npm module. If you install grunt globally via npm install -g grunt, it will be available for use in all of your projects. Once grunt has been installed, you can type grunt --help at the command line for more information. And if you want to see grunt "grunt" itself, cd into grunt's directory and type grunt

Note: in Windows, you may need to run grunt as grunt.cmd. See the FAQ for more Windows-specific information.

For projects already using grunt, you're done. Otherwise, if you're adding grunt to an existing project or starting from scratch, check out the getting started guide, which is a complete guide to configuring grunt for your project.

2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.