我发现在repl中为提示添加颜色确实有助于分离输出。我通过使用NPM的粉笔来实现这一点,但这会在提示和光标之间增加一些空间。
var term = repl.start({
prompt: chalk.blue('goose> '),
eval: function(cmd, context, filename, cb){
...
}
});
提示出现如下(' |'是光标):
goose> |
关于如何修复的任何想法?
答案 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