什么节点模块提供CLI提示?

我一直在寻找一个节点模块,为节点应用程序提供类似于REPL的CLI提示界面。

我所寻找的是询问者或提示 者与指挥官之间的混合。

Node提供了一个内置的REPL模块 ,但是这只是暴露了你的应用程序的原始JavaScript。 我想为应用程序构build一个虚拟接口。

例如,假设你运行node server.js ,你会得到一个提示:

 server:~$ 

这将在您自己的虚拟环境中performance得像一个基本的unix提示符。 按enter键:

 server:~$ server:~$ 

或者help

 server:~$ help Commands: debug [setting] Enables or disables debugging. show stats Displays live stats for your web server. server:~$ 

你可以执行自定义命令:

 server:~$ debug on -v 7 Debugging turned on with a verbosity of 7 ... live logging ... 

任何想法NPM模块处理这个?


9个月后更新

由于没有符合我的需求,我最终构build并发布了Vorpal ,一个在Node中构build交互式CLI的框架。

你可以使用标准的REPL模块,并插入一个自定义的命令评估器。 “向上箭头重复命令”等已经烘焙到repl模块,所以你不必担心。

例如,下面是一个很好实现的评估器,它可以处理你在问题中描述的内容:

 var repl = require("repl"); var cmds = { "help" : function(input, context) { return "debug [setting] Enables or disables debugging..." }, "debug" : function(input, context) { var args = input.split(/\s+/).slice(1); var onoff = args[0]; var verbosity = args[2]; return "Debugging turned " + onoff + " with a verbosity of " + verbosity; }, "exit": function(input, context) { process.exit(); }, "default" : function(input, context) { return "Command not understood"; } }; function eval(input, context, filename, callback) { var cmd = input.split(/\s+/)[0]; var result = (cmds[cmd] || cmds["default"])(input, context); callback(null, result); } repl.start({ prompt: "server:~$ ", eval: eval }); 

请注意,演示的重点在于如何实现自定义REPL; 有明显更好的方法来实现评估器比空白分裂和函数的散列,但如何实现命令评估程序取决于你的应用程序应该做什么

有一个可用的节点shell ,请参阅主页 。

主页上的function是:

壳牌为基于控制台的应用程序带来了Connect启发式API,Express启发式路由和其他类似的function。

  • 在shell模式和命令模式下运行
  • 控制台应用程序的头等公民(箭头,ctrl-a,ctrl-u,…)
  • 用户友好的历史,帮助消息和许多其他插件
  • 基础结构和build立复杂的应用程序
  • Express路由中的命令匹配,参数和高级function
  • 基于中间件的灵活架构,用于插件创build和路由增强
  • 对于我们这些使用Connect或Express的人来说,熟悉的API
  • 通过Redis插件,HTTP服务器,Cloud9,CoffeeScript,…

在主页上find一个基本的reddis客户端示例,其中包含命令完成和历史logging。

这听起来像你实际上正在寻找readline模块,它为repl模块供电。