12

一直在谷歌搜索并搜索stackoverflow,但没有遇到任何问题。我想开发一个带有节点的交互式外壳,并想知道最好的方法。有没有人可以推荐使用的图书馆?

我编写了一个库,现在想要一个 CLI 界面与之交互,通过 2 种方法:使用参数运行应用程序,或通过交互式 shell。例如

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

有什么建议么?

4

4 回答 4

14

我猜 command.js 就是你要找的。

https://github.com/visionmedia/commander.js

http://oscar-mejia.com/blog/how-to-create-a-command-line-program-with-nodejs/

也看看 REPL http://nodejs.org/api/repl.html

于 2012-10-17T08:34:33.643 回答
5

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

var vorpal = require('vorpal')();

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

vorpal
  .delimiter('myapp>')
  .show();
于 2015-09-26T18:01:58.513 回答
3

我最近开始了一个增强 REPL 的项目,它提供插件和多语言支持(如 CoffeeScript):

http://danielgtaylor.github.com/nesh/

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

于 2013-04-03T15:46:31.377 回答
0

这个问题有点老了,但我已经对我不久前构建的一个模块给出了一些里程,它将启动一个交互式 shell 式命令提示符:

https://github.com/mrvisser/node-readcommand

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

  • 输入的类 shell 解析
  • 通过转义换行符或引用它来支持多行命令
  • 命令历史支持(使用时readcommand.loop
  • 基于参数的自动完成(围绕readlines 基于文本的自动完成支持

希望别人也觉得它有用。

对于更高级和自以为是的交互式 CLI 框架,我还构建了node-corporalhttps ://github.com/mrvisser/node-corporal 。这可能超出了您的预期,但它提供了一个用于将 CLI 应用程序组合在一起的结构和环境。

于 2015-05-05T12:36:31.430 回答