在REPL中更改REPL提示

我试图用REPL里面给出的文本来改变Node的REPL的提示。

我原来的尝试是这样的。

import repl from 'repl' let PROMPT = 'original > ' repl.start({ ignoreUndefined: true, prompt: PROMPT, eval: (text, context, filename, callback) => { PROMPT = `${text} >` return callback() } }) 

我意识到这是不会工作的,因为当过程开始时,repl的提示被设置。

我想出了这样的事情,在input命令之后,它会以新的提示启动一个新的repl。

 import repl from 'repl' let PROMPT = 'original > ' let REPL = createRepl(PROMPT) function createRepl (prompt) { return repl.start({ ignoreUndefined: true, prompt: PROMPT, eval: (text, context, filename, callback) => { PROMPT = `${text.replace(/\n/, '')} >` REPL.close() REPL = createRepl(PROMPT) } }) } 

这个解决scheme几乎就是当我closures原来的REPL时进程正在退出的问题。

我只是试图在进程启动后从脚本内部更改REPL提示符。 我愿意以任何方式来做到这一点。 理想情况下, prompt通道采用了一个prompt参数的函数,并允许您从函数内部设置它,然后我可以使用一个事件或其他东西。

你应该可以调用repl.setPrompt('foo> '); 改变提示。