在 console.log() 中替换和着色参数

Substitute and colorize arguments in console.log()

Node.js 有一个很好的模块,叫做 chalk,它允许将颜色和文本格式应用到 console.log() 函数。

如果我这样写:

console.log("test string substitution with coloring: %s, %s", chalk.red("red"), chalk.magenta("magenta"));    

它将使用字符串替换并输出正确着色的红色和洋红色:

现在我要做的是制作接受文本作为第一个参数和可变数量参数的函数,应该:

  1. substitude 相应的替换文字(就像常规 console.log() 一样);
  2. 每个传递的参数都应使用 chalk.red();
  3. 涂上红色

例如:

function log(text, ...args) {
   // magic here
}

log("This must be %s, and %s as well", "red", "this must be red");

这将给出:

我已经尝试使用 console.log(text, chalk.red.apply(null, args)) 但它似乎没有产生我想要的结果。

你只需要将数组散布到 console.log() 中。例如,您可以内联 map():

let chalk = require('chalk')

console.log("test string substitution with coloring: %s and %s",  ...["red", "this must be red"].map(t => chalk.red(t)));    

当然,你也可以把它做成一个函数:

function log(text, ...args){
    console.log(text,  ...args.map(t => chalk.red(t)));    
}