黑人的命也是命

grunt.log

将消息输出到控制台。

有关详细信息,请参阅日志库源代码

日志 API

Grunt 输出应该看起来一致,甚至可能很漂亮。因此,有大量的日志记录方法和一些有用的模式。所有实际记录内容的方法都是可链接的。

注意:grunt.verbose 下的所有方法都与 grunt.log 方法完全一样,但仅在指定了 --verbose 命令行选项时才会记录。

grunt.log.write / grunt.verbose.write

记录指定的 msg 字符串,不带尾随换行符。

grunt.log.write(msg)

grunt.log.writeln / grunt.verbose.writeln

记录指定的 msg 字符串,带尾随换行符。

grunt.log.writeln([msg])

grunt.log.error / grunt.verbose.error

如果省略 msg 字符串,则以红色记录 ERROR,否则记录 >> msg,带尾随换行符。

grunt.log.error([msg])

grunt.log.errorlns / grunt.verbose.errorlns

使用 grunt.log.error 记录错误,使用 grunt.log.wraptext 将文本包装到 80 列。

grunt.log.errorlns(msg)

grunt.log.ok / grunt.verbose.ok

如果省略 msg 字符串,则以绿色记录 OK,否则记录 >> msg,带尾随换行符。

grunt.log.ok([msg])

grunt.log.oklns / grunt.verbose.oklns

使用 grunt.log.ok 记录成功消息,使用 grunt.log.wraptext 将文本包装到 80 列。

grunt.log.oklns(msg)

grunt.log.subhead / grunt.verbose.subhead

以**粗体**记录指定的 msg 字符串,带尾随换行符。

grunt.log.subhead(msg)

grunt.log.writeflags / grunt.verbose.writeflags

记录 obj 属性列表(适用于调试标志)。

grunt.log.writeflags(obj, prefix)

grunt.log.debug / grunt.verbose.debug

记录调试消息,但仅在指定了 --debug 命令行选项时才会记录。

grunt.log.debug(msg)

详细和非详细

grunt.verbose 下的所有日志记录方法都与其 grunt.log 对应方法完全一样,但仅在指定了 --verbose 命令行选项时才会记录。在 grunt.log.notverbosegrunt.log.verbose.or 中也提供了“非详细”对应方法。实际上,.or 属性可以在 verbosenotverbose 上使用,以有效地在两者之间切换。

grunt.verbose / grunt.log.verbose

此对象包含 grunt.log 的所有方法,但仅在指定了 --verbose 命令行选项时才会记录。

grunt.verbose

grunt.verbose.or / grunt.log.notverbose

此对象包含 grunt.log 的所有方法,但仅在*未*指定 --verbose 命令行选项时才会记录。

grunt.verbose.or

实用方法

这些方法实际上并不记录,它们只返回可在其他方法中使用的字符串。

grunt.log.wordlist

返回 arr 数组项的逗号分隔列表。

grunt.log.wordlist(arr [, options])

options 对象具有以下可能的属性和默认值

var options = {
  // The separator string (can be colored).
  separator: ', ',
  // The array item color (specify false to not colorize).
  color: 'cyan',
};

grunt.log.uncolor

从字符串中删除所有颜色信息,使其适合于测试 .length 或可能记录到文件。

grunt.log.uncolor(str)

grunt.log.wraptext

使用 \ntext 字符串包装到 width 字符,确保单词不会在中间断开,除非绝对必要。

grunt.log.wraptext(width, text)

grunt.log.table

texts 字符串数组包装到 widths 字符宽的列中。grunt.log.wraptext 方法的包装器,可用于在列中生成输出。

grunt.log.table(widths, texts)

示例

一种常见的模式是仅在 --verbose 模式下或发生错误时才记录,如下所示

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.');
  }
});

以上代码的说明

  1. grunt.verbose.write(msg); 记录消息(不带换行符),但仅在 --verbose 模式下。
  2. grunt.verbose.ok(); 以绿色记录 OK,带换行符。
  3. grunt.verbose.or.write(msg).error().error(e.message); 执行以下操作
    1. grunt.verbose.or.write(msg) 如果不在 --verbose 模式下,则记录消息(不带换行符),并返回 notverbose 对象。
    2. .error() 以红色记录 ERROR,带换行符,并返回 notverbose 对象。
    3. .error(e.message); 记录实际的错误消息(并返回 notverbose 对象)。
  4. grunt.fail.warn('Something went wrong.'); 以亮黄色记录警告,退出 Grunt 并返回退出代码 1,除非指定了 --force

查看grunt-contrib-* 任务源代码以获取更多示例。