为repl提示添加颜色(节点)

时间:2014-05-09 16:41:35

标签: node.js terminal console read-eval-print-loop chalk

我发现在repl中为提示添加颜色确实有助于分离输出。我通过使用NPM的粉笔来实现这一点,但这会在提示和光标之间增加一些空间。

var term = repl.start({
    prompt: chalk.blue('goose> '),
    eval: function(cmd, context, filename, cb){
        ...
    }
});

提示出现如下(' |'是光标):

goose>              |

关于如何修复的任何想法?

2 个答案:

答案 0 :(得分:4)

事实证明这很简单:

var prompt = 'My fancy prompt >>> ';
rl.setPrompt(chalk.blue(prompt), prompt.length);

您需要指定字符数,因为readline不理解转义序列实际显示为零宽度。

(这是基于费利克斯的回答。)

答案 1 :(得分:1)

repl.start()

之前运行此功能
var readline = require('readline');
var hasAnsi = require('has-ansi');
var stripAnsi = require('strip-ansi');

var _setPrompt = readline.Interface.prototype.setPrompt;
readline.Interface.prototype.setPrompt = function() {
  if (arguments.length === 1 && hasAnsi(arguments[0])) {
    return _setPrompt.call(this, arguments[0], stripAnsi(arguments[0]).length);
  } else {
    return _setPrompt.apply(this, arguments);
  }
};

依赖关系:npm install has-ansi strip-ansi