inquirer.js - 将BottomBar与顺序日志结合起来

时间:2017-01-22 13:40:16

标签: javascript node.js

我正在使用inquirer.js编写Node CLI命令,这可能需要很长时间才能完成,所以我尝试更新这样的UI:

✓ Thing A complete
✓ Thing B complete
✓ Thing C complete
⠹ Loading...

{display json result}

(其中'正在加载...'停留在底部,日志会在完成时显示)。

简化后,该命令的结构如下:

ui.startLoader()
thingA()
  .then((res) => {
    ui.log('✓ Thing A complete')
    return res
  })
  .then((res) => {
    return res.reduce(thingB, Promise.resolve())
  })
  .then((res) => {
    ui.log('✓ Thing B complete')
    return res
  })
  .then((res) => {
    return res.reduce(thingC, Promise.resolve())
  })
  .then((res) => {
    ui.log('✓ Thing C complete')
    return res
  })
  .then(ui.json)
  .catch(console.log)
  .then(ui.exit)

ui.startloader只是设置BottomBar,如官方example所述,似乎工作正常。

ui.logconsole.log('\n' . text)时,我的输出为:

⠋ Loading...
✓ Thing A complete
⠹ Loading...
✓ Thing B complete
⠴ Loading...
✓ Thing C complete

{display json result}

ui.log是inquirer.js' BottomBar.log.write(text),我的输出只是:

✓ Thing A complete
⠹ Loading...

{display json result}

正在加载......' line保持在底部,但只显示第一个日志。

1 个答案:

答案 0 :(得分:2)

这似乎是Inquirer.js中的一个问题。当我从0.12.0更新到更新的基于ES6 Promise的界面时,我遇到了它。

我已经开了一个问题: https://github.com/SBoudrias/Inquirer.js/issues/485

并提出修复请求: https://github.com/SBoudrias/Inquirer.js/pull/486

希望它被接受。