Grunt: The JavaScript Task Runner (v0.4.5)

Usage
 grunt [options] [task [task ...]]

Options
    --help, -h  Display this help text.                                        
        --base  Specify an alternate base path. By default, all file paths are 
                relative to the Gruntfile. (grunt.file.setBase) *              
    --no-color  Disable colored output.                                        
   --gruntfile  Specify an alternate Gruntfile. By default, grunt looks in the 
                current or parent directories for the nearest Gruntfile.js or  
                Gruntfile.coffee file.                                         
   --debug, -d  Enable debugging mode for tasks that support it.               
       --stack  Print a stack trace when exiting with a warning or fatal error.
   --force, -f  A way to force your way past warnings. Want a suggestion? Don't
                use this option, fix your code.                                
       --tasks  Additional directory paths to scan for task and "extra" files. 
                (grunt.loadTasks) *                                            
         --npm  Npm-installed grunt plugins to scan for task and "extra" files.
                (grunt.loadNpmTasks) *                                         
    --no-write  Disable writing files (dry run).                               
 --verbose, -v  Verbose mode. A lot more information output.                   
 --version, -V  Print the grunt version. Combine with --verbose for more info. 
  --completion  Output shell auto-completion rules. See the grunt-cli          
                documentation for more information.                            

Options marked with * have methods exposed via the grunt API and should instead
be specified inside the Gruntfile wherever possible.

Available tasks
(no tasks found)

The list of available tasks may change based on tasks directories or grunt
plugins specified in the Gruntfile or via command-line options.

For more information, see http://gruntjs.com/
