有一段时间以来,我一直在尝试做一些到目前为止对我来说并不奏效的事情。
使用 nodejs,我喜欢运行交互式 sh-command 并在命令退出后使用 sh-command 输出。我喜欢编写一个可生成的生成器函数,它包装交互式 shell 命令的运行并返回 shell 命令的输出。
方法一:shelljs
- shelljs
- 我在 shelljs 上取得了一些成功,但在某些时候它不会运行得更远。
- 问题1:是否有可能让shelljs达到我可以继承stdio并使shelljs函数可屈服的程度?
方法 2:child_process.spawnSync
- child_process.spawnSync
- 最后我发现了 child_process.spawnSync 并且很高兴,至少我可以运行交互式 sh 命令而不会出现问题
options: { stdio: 'inherit' }
- 但我还没有找到如何取回 child_process.spawnSync 的输出。
- 问题 2:如何将 spawnSync 包装到返回 child_process 输出的生成器函数中?
方法3:协同子进程
- 我也试过co-child-process。
- 它似乎可以运行,但不能与 stdio 交互。关于这个有一个问题,我不太明白。
- 问题 3:有人可以解释我/发布一个示例 co-child-process 将如何与 stdio 继承一起工作。
方法 4:promisify child_process.spawn() 与 bluebird
- 如果 child_process.spawn() 是可承诺的,我在 bluebird 上打开了一个问题
所以我的问题。有人可以向我发布一个如何运行交互式 shell 命令的示例,该命令可以包装在一个可生成的生成器函数中,该生成器函数返回 shell 命令的输出?我对新方法持开放态度。
我创建了一个 npm 模块,它可以在github上找到,你可以在其中 fork 并做出贡献。
提前谢谢。