2012-10-17 5 views
11

googeln für diese und suchen stackoverflow, aber bin nicht auf etwas stoßen. Ich möchte eine interaktive Shell mit Knoten entwickeln und frage mich nach dem besten Ansatz dafür. Gibt es eine Bibliothek, die jemand empfehlen kann?Nodejs Bibliothek/Modul zur Entwicklung interaktiver CLI-Apps?

Ich habe eine Bibliothek geschrieben und möchte nun, dass eine CLI-Schnittstelle mit ihr interagieren kann, und zwar auf 2 Arten: Ausführen der App mit Parametern oder über interaktive Shell. z.B.

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

Irgendwelche Vorschläge?

+0

Eine Anmerkung: Ich bin derzeit der Aufbau mit process.argv mit Parametern, seine vor allem die Interaktivität, die ich – Brett

Antwort

12
+0

Dank vinayr aufzubauen versuchen. REPL sollte gut funktionieren. – Brett

+2

Inquirer scheint eine gute Alternative, mit Validierung und nette Aufforderungen: https://github.com/Sboudrias/Inquirer.js/ – berdario

+0

Erzähl mir nur, wie 'commander.js' interaktiv ist? Es kann nichts anderes tun, als CLI-Optionen '$ meinscript.js -foo -bar-baz' zu akzeptieren. Nichts interaktiv. Warum hast du es vorgeschlagen? – Green

3

ich vor kurzem ein Projekt für eine verbesserte REPL begonnen haben, die Plugins und mehrsprachige Unterstützung (wie Coffeescript) bestimmt:

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

Es könnte nützlich sein f oder Sie beim Erstellen interaktiver Apps. Lass mich wissen, ob du irgendwelche Features in Nesh sehen möchtest!

+0

wird es sich ansehen, danke Daniel. – Brett

0

Diese Frage ist ein bisschen alt, aber ich habe einige Kilometer zu einem Modul ich vor einer Weile gebaut gegeben, das eine interaktive Shell-ähnliche Eingabeaufforderung starten wird:

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

Der wesentliche Unterschied zu Über etwas wie commander ist es möglich, den Shell-Sitzungsstatus beizubehalten und die Befehle intern in Node.js zu akzeptieren, anstatt jeden Aufruf als zustandslosen Neustart mit den analysierten Argumenten der Shell zu betrachten. Es wickelt effektiv Knoten interne readline Modul bereitzustellen:

  • schalenartige Parsing der Eingabe
  • mehrzeiligen Befehl Unterstützung durch die neuen Leitungen entweichende oder unter Angabe darüber
  • Befehlsverlauf Unterstützung (bei Verwendung von readcommand.loop)
  • Argument-basierte auto-complete (

der Hoffnung, jemand anderes um readline s textbasierte automatische Vervollständigung Unterstützung gewickelt findet es auch nützlich.

Für ein fortgeschritteneres und meinungsorientiertes interaktives CLI-Framework habe ich auch node-corporal: https://github.com/mrvisser/node-corporal gebaut. Das ist wahrscheinlich mehr als Sie suchen, aber es bietet eine Struktur und Umgebung für das Zusammenfassen von CLI-Apps.

5

Vorpal ist ein Framework genau für das, was die Frage beschreibt, obwohl sie es eine "immersive cli" nennen.

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

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

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