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

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

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

提示符就像这样('|'是游标):

 goose> | 

任何想法如何解决?

事实certificate非常简单:

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

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

(这是根据费利克斯的回答。)

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