使对象的属性在终端中显示为颜色

时间:2017-04-16 18:34:56

标签: javascript node.js

有可能这样做吗?我想使用npm模块粉笔和颜色属性,以便当我JSON.stringify它并在终端中显示对象内容时,属性值将显示为我选择的颜色,以便更容易阅读。

我在想这样的事情:

const arrObjects = [
  {
    color: 'red',
    fruit: 'apple'
  },
  {
    color: 'pink',
    fruit: 'dragonfruit'
  }
];

const coloredProps = arrObjects.map(fruit => {
  Object.defineProperty(fruit, chalk.yellow.bold('family'), {
    value: 'healthy',
    writeable: true,
    configurable: true,
    enumerable: true
  });
});

console.log(JSON.stringify(arrObjects, null, 2));

因此它会以黄色显示新属性 family

这几乎就像我到达那里但问题是在终端中它因为JSON.stringify而将属性显示为unicode。有没有办法通过这个?

这是我的结果:

enter image description here

2 个答案:

答案 0 :(得分:0)

不要在您的对象中放置ANSI转义符号'价值观或关键。这是混合显示和数据,这只会给你带来麻烦。

JSON编码器通常使用\uXXXX表示来转义不可打印或UTF-8字符,终端模拟器无法识别这些表示(您需要{em>实际的字符表示{ {1}}或\x1b,而不是转义的代表。)

您的代码正在执行的操作基本上是打印\u001b - 请注意双斜杠。终端模拟器不会认识到这一点。

您是否尝试过以下操作?

console.log('\\u001b')

答案 1 :(得分:-1)

你有没有试过strip-ansi实用工具用于粉笔

https://github.com/chalk/strip-ansi