从REPL中更改REPL提示

Change REPL prompt from within the REPL

本文关键字:REPL 提示      更新时间:2023-09-27

我正试图用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的提示是在流程开始时设置的。

我想到了这样的东西,它在输入命令后启动一个带有新提示的新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)
    }
  })
}

这个解决方案几乎已经存在,问题是当我关闭原始REPL时,进程正在退出。

我只是想在流程开始后从脚本内部更改REPL提示。我对任何方法都持开放态度。理想情况下,prompt道具接受一个带有prompt参数的函数,并允许您在函数中设置它,然后我可以使用事件或其他东西。

您应该能够调用repl.setPrompt('foo> ');来更改提示。