节点 - 使用 mocha 测试时更改输出颜色

dav*_*esp 5 javascript mocha.js node.js chai typescript

我有一项gulp任务负责使用mocha.

gulp.task('test', ['cls'], () => {
    execout('mocha -r ts-node/register --timeout 999999 --colors test/*.test.ts');
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,如您所见,有些灰线很难看到:

在此处输入图片说明

我的问题是,我怎样才能改变这种颜色?

我成功地尝试了这里推荐的内容(它有效):
https : //github.com/mochajs/mocha/issues/802#issuecomment-18254298):

$ gulp test > >(perl -pe 's/\x1b\[90m/\x1b[92m/g') 2> >(perl -pe 's/\x1b\[90m/\x1b[92m/g' 1>&2)
Run Code Online (Sandbox Code Playgroud)

但我不喜欢那样,因为我不想每次运行该命令时都在命令行上写下所有内容。

然后我尝试将所有这些移动到gulp任务内部,如下所示:

gulp.task('test', ['cls'], () => {
    execout("mocha -r ts-node/register --timeout 999999 --colors test/*.test.ts > >(perl -pe 's/\x1b\[90m/\x1b[92m/g') 2> >(perl -pe 's/\x1b\[90m/\x1b[92m/g' 1>&2)");
});
Run Code Online (Sandbox Code Playgroud)

但是后来我在终端上收到以下错误。

ERR: > was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

另一方面,这里还有另一个建议/方法,但我不知道如何使用它:

https://github.com/mochajs/mocha/issues/1200#issuecomment-62780003

关于如何修改难以阅读的灰线颜色的任何想法?

谢谢!

Dub*_*sor 5

只需手动更改 base.js 中的颜色。

转到:您的项目 root\node_modules\mocha\lib\reporters\base.js 并玩数字..

 exports.colors = {
  pass: 32, //with value 32 your gray "pass" lines become green
  fail: 31,
  'bright pass': 92,
  'bright fail': 91,
  'bright yellow': 93,
  pending: 36,
  suite: 0,
  'error title': 0,
  'error message': 31,
  'error stack': 90,
  checkmark: 32,
  fast: 90,
  medium: 33,
  slow: 31,
  green: 32,
  light: 90,
  'diff gutter': 90,
  'diff added': 32,
  'diff removed': 31
}; 
Run Code Online (Sandbox Code Playgroud)

或者在你的项目根目录中创建 spec-helper.js 文件。
然后放入--require spec-helper.js Mocha的shell命令。(见下面的评论)

// spec-helper.js
var colors = require('mocha/lib/reporters/base').colors;
    colors['pass'] = 32;
Run Code Online (Sandbox Code Playgroud)

2020 年更新:

由于mochaopts文件已弃用并引入了配置文件,因此您不再需要帮助文件。更改 mocha 源代码是您能做的最糟糕的事情。

现在您可以使用 javascript 格式的配置文件并根据需要重新定义报告器的颜色。

当您在运行时动态重新定义对象的属性时,这就是所谓的“猴子补丁”。- 当 mocha 最初加载时,它使用配置文件。在该文件中,您导入'mocha/lib/reporters/base'模块并覆盖颜色或符号。使用该基础文件作为参考。这些更改只会在运行时存在,实际的源代码将保持不变。

.mocharc.js文件放在根目录中。

 exports.colors = {
  pass: 32, //with value 32 your gray "pass" lines become green
  fail: 31,
  'bright pass': 92,
  'bright fail': 91,
  'bright yellow': 93,
  pending: 36,
  suite: 0,
  'error title': 0,
  'error message': 31,
  'error stack': 90,
  checkmark: 32,
  fast: 90,
  medium: 33,
  slow: 31,
  green: 32,
  light: 90,
  'diff gutter': 90,
  'diff added': 32,
  'diff removed': 31
}; 
Run Code Online (Sandbox Code Playgroud)

看看它的样子。

在此处输入图片说明

我在这里使用 Windows 终端和 WSL。表情符号可能无法在本机 Windows 控制台中使用,但在 Linux 或 Mac 上应该可以使用。