grunt.log - Ramanonos/grunt GitHub Wiki
Output messages to the console.
See the log lib source for more information.
The log API
Grunt output should look consistent, and maybe even pretty. As such, there is a plethora of logging methods, and a few useful patterns. All of the methods that actually log something are chainable.
Note: all methods available under grunt.verbose
work exactly like grunt.log
methods, but only log if the --verbose
command-line option was specified.
grunt.log.write / grunt.verbose.write
Log the specified msg
string, with no trailing newline.
grunt.log.write(msg)
grunt.log.writeln / grunt.verbose.writeln
Log the specified msg
string, with trailing newline.
grunt.log.writeln([msg])
grunt.log.error / grunt.verbose.error
If msg
string is omitted, logs ERROR
in red, otherwise logs >> msg
, with trailing newline.
grunt.log.error([msg])
grunt.log.errorlns / grunt.verbose.errorlns
Log an error with grunt.log.error
, wrapping text to 80 columns using grunt.log.wraptext
.
grunt.log.errorlns(msg)
grunt.log.ok / grunt.verbose.ok
If msg
string is omitted, logs OK
in green, otherwise logs >> msg
, with trailing newline.
grunt.log.ok([msg])
grunt.log.oklns / grunt.verbose.oklns
Log an ok message with grunt.log.ok
, wrapping text to 80 columns using grunt.log.wraptext
.
grunt.log.oklns(msg)
grunt.log.subhead / grunt.verbose.subhead
Log the specified msg
string in bold, with trailing newline.
grunt.log.subhead(msg)
grunt.log.writeflags / grunt.verbose.writeflags
Log a list of obj
properties (good for debugging flags).
grunt.log.writeflags(obj, prefix)
grunt.log.debug / grunt.verbose.debug
Logs a debugging message, but only if the --debug
command-line option was specified.
grunt.log.debug(msg)
Verbose and Notverbose
All logging methods available under grunt.verbose
work exactly like their grunt.log
counterparts, but only log if the --verbose
command-line option was specified. There is also a "notverbose" counterpart available at both grunt.log.notverbose
and grunt.log.verbose.or
. In fact, the .or
property can be used on both verbose
and notverbose
to effectively toggle between the two.
grunt.verbose / grunt.log.verbose
This object contains all methods of grunt.log
but only logs if the --verbose
command-line option was specified.
grunt.verbose
grunt.verbose.or / grunt.log.notverbose
This object contains all methods of grunt.log
but only logs if the --verbose
command-line option was not specified.
grunt.verbose.or
Utility Methods
These methods don't actually log, they just return strings that can be used in other methods.
grunt.log.wordlist
Returns a comma-separated list of arr
array items.
grunt.log.wordlist(arr [, options])
The options
object has these possible properties, and default values:
var options = {
// The separator string (can be colored).
separator: ', ',
// The array item color (specify false to not colorize).
color: 'cyan',
};
grunt.log.uncolor
Removes all color information from a string, making it suitable for testing .length
or perhaps logging to a file.
grunt.log.uncolor(str)
grunt.log.wraptext
Wrap text
string to width
characters with \n
, ensuring that words are not split in the middle unless absolutely necessary.
grunt.log.wraptext(width, text)
grunt.log.table
Wrap texts
array of strings to columns widths
characters wide. A wrapper for the grunt.log.wraptext
method that can be used to generate output in columns.
grunt.log.table(widths, texts)
An Example
A common pattern is to only log when in --verbose
mode OR if an error occurs, like so:
grunt.registerTask('something', 'Do something interesting.', function(arg) {
var msg = 'Doing something...';
grunt.verbose.write(msg);
try {
doSomethingThatThrowsAnExceptionOnError(arg);
// Success!
grunt.verbose.ok();
} catch(e) {
// Something went wrong.
grunt.verbose.or.write(msg).error().error(e.message);
grunt.fail.warn('Something went wrong.');
}
});
An explanation of the above code:
grunt.verbose.write(msg);
logs the message (no newline), but only in--verbose
mode.grunt.verbose.ok();
logs OK in green, with a newline.grunt.verbose.or.write(msg).error().error(e.message);
does a few things:grunt.verbose.or.write(msg)
logs the message (no newline) if not in--verbose
mode, and returns thenotverbose
object..error()
logs ERROR in red, with a newline, and returns thenotverbose
object..error(e.message);
logs the actual error message (and returns thenotverbose
object).grunt.fail.warn('Something went wrong.');
logs a warning in bright yellow, exiting Grunt with exit code 1, unless--force
was specified.
Take a look at the grunt-contrib-* tasks source code for more examples.