Библиотека/модуль Nodejs для разработки интерактивных приложений CLI?

был googling для этого и искал stackoverflow, но я ничего не вижу. Я хочу создать интерактивную оболочку с node и задаться вопросом о наилучшем подходе для этого. Есть ли библиотека, которую любой может рекомендовать использовать?

Я написал библиотеку и теперь хочу, чтобы интерфейс CLI взаимодействовал с ней двумя способами: запуском приложения с параметрами или с помощью интерактивной оболочки. например.

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

Любые предложения?

Ответ 2

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();

Ответ 3

Недавно я начал проект для расширенного REPL, который предоставляет плагины и многоязычную поддержку (например, CoffeeScript):

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

Это может быть полезно для вас при создании интерактивных приложений. Дайте мне знать, если вы хотите увидеть какие-либо функции в Nesh!

Ответ 4

Этот вопрос немного устарел, но я дал некоторый пробег модулю, который я построил некоторое время назад, который запустит интерактивную командную строку командной оболочки:

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

Ключевое отличие от этого над чем-то вроде commander заключается в том, что он позволяет поддерживать состояние сеанса оболочки и принимать внутренние команды в Node.js, а не требовать, чтобы каждый вызов являлся повторным запуском без сохранения состояния с обработанной оболочкой аргументы. Он эффективно обертывает node внутренний readline модуль, чтобы обеспечить:

  • shell-подобный синтаксический анализ ввода
  • поддержка многострочной командной строки путем экранирования новой строки или ее цитирования
  • поддержка истории команд (при использовании readcommand.loop)
  • автоматическое заполнение на основе аргументов (обернутая readline текстовая автоматическая полная поддержка

Надеясь, что кто-то еще найдет это полезным, тоже.

Для более продвинутых и упрямых интерфейсов CLI я также построил node-corporal: https://github.com/mrvisser/node-corporal. Скорее всего, это больше, чем вы ищете, но это обеспечивает структуру и среду для взлома приложений CLI.