一直在谷歌搜索并搜索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>
有什么建议吗?
答案 0 :(得分:13)
我猜commander.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
答案 1 :(得分:5)
Vorpal是一个完全针对问题所描述内容的框架,尽管他们称之为“immersive cli'。
var vorpal = require('vorpal')();
vorpal
.command('doSomething')
.action(function (args, cb){
this.log('App Result: I did something');
cb();
});
vorpal
.delimiter('myapp>')
.show();
答案 2 :(得分:3)
我最近开始了一个增强的REPL项目,它提供了插件和多语言支持(如CoffeeScript):
http://danielgtaylor.github.com/nesh/
在构建交互式应用时,它可能对您有用。如果您想在Nesh中看到任何功能,请告诉我们。
答案 3 :(得分:0)
这个问题有点陈旧,但是我已经为我之前构建的模块提供了一些里程,它将启动一个类似交互式shell的命令提示符:
https://github.com/mrvisser/node-readcommand
与commander这样的关键区别在于它允许你维护shell会话状态并在Node.js内部接受命令,而不是要求每次调用都是一个无状态的重新运行shell'解析的参数。它有效地包装节点的内部readline
模块以提供:
readcommand.loop
时)readline
基于文本的自动完成支持希望其他人发现它也很有用。
对于更高级和自以为是的交互式CLI框架,我还构建了node-corporal
:https://github.com/mrvisser/node-corporal。这可能比您正在寻找的更多,但它提供了一个结合CLI应用程序的结构和环境。