Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 用于开发交互式CLI应用程序的Nodejs库/模块?_Node.js_Command Line Interface_Interactive - Fatal编程技术网

Node.js 用于开发交互式CLI应用程序的Nodejs库/模块?

Node.js 用于开发交互式CLI应用程序的Nodejs库/模块?,node.js,command-line-interface,interactive,Node.js,Command Line Interface,Interactive,我一直在谷歌上搜索这个并搜索stackoverflow,但没有发现任何东西。我想开发一个带有节点的交互式shell,并想知道实现这一点的最佳方法。有没有任何人可以推荐使用的图书馆 我已经编写了一个库,现在需要一个CLI接口与之交互,方法有两种:使用参数运行应用程序,或通过交互式shell。e、 g $ node myapp doSomething App Result: I did something $ node myapp cli Entering interactive mode... m

我一直在谷歌上搜索这个并搜索stackoverflow,但没有发现任何东西。我想开发一个带有节点的交互式shell,并想知道实现这一点的最佳方法。有没有任何人可以推荐使用的图书馆

我已经编写了一个库,现在需要一个CLI接口与之交互,方法有两种:使用参数运行应用程序,或通过交互式shell。e、 g

$ node myapp doSomething
App Result: I did something
$ node myapp cli
Entering interactive mode...
myapp>
myapp> doSomething
App Result: I did something
myapp>

有什么建议吗?

我想commander.js就是你要找的


另请看REPL

我最近启动了一个增强型REPL项目,该项目提供插件和多语言支持(如CoffeeScript):


在构建交互式应用程序时,它可能对您很有用。如果您想在Nesh中看到任何功能,请告诉我

这个问题有点老了,但我给了我刚才构建的一个模块一些启示,该模块将启动一个类似shell的交互式命令提示符:

与commander相比,它的关键区别在于它允许您在Node.js中维护shell会话状态并在内部接受命令,而不是要求每次调用都使用shell解析的参数以无状态重新运行。它有效地包装了节点的内部
readline
模块,以提供:

  • 输入的shell式解析
  • 通过转义新行或引用新行来支持多行命令
  • 命令历史记录支持(使用
    readcommand.loop
    时)
  • 基于参数的自动完成(环绕
    readline
    s基于文本的自动完成支持
希望其他人也觉得它有用

对于一个更高级、更固执己见的交互式CLI框架,我还构建了
节点库
:。这可能比您想要的要多,但它为组合CLI应用程序提供了一个结构和环境。

是一个完全符合问题描述的框架,尽管他们称之为“”


注意:我目前正在使用带有参数的process.argv进行构建,主要是我尝试构建的交互式Inquirer似乎是一个不错的选择,带有验证和良好的提示:只告诉我
commander.js
是如何交互的?它除了接受cli选项
$myscript.js-foo-bar-baz
之外什么都做不了不切实际。你为什么提出这个建议?@berdario基于Inquirer.js构建了一个API来构建CLI,这似乎是他的要求。*免责声明:我制作了Vorpal。
var vorpal = require('vorpal')();

vorpal
  .command('doSomething')
  .action(function (args, cb){
    this.log('App Result: I did something');
    cb();
  });

vorpal
  .delimiter('myapp>')
  .show();