2012-10-17 21 views
11

là googling cho điều này và tìm kiếm stackoverflow, nhưng không phải đi qua bất cứ điều gì. Tôi muốn phát triển một vỏ tương tác với nút, và tự hỏi về cách tiếp cận tốt nhất cho việc này. Có thư viện nào mà mọi người có thể khuyên dùng không?Thư viện/mô-đun Nodejs để phát triển các ứng dụng CLI tương tác?

Tôi đã viết một thư viện và bây giờ muốn có giao diện CLI tương tác với nó, bằng 2 phương pháp: chạy ứng dụng có tham số hoặc qua trình bao tương tác. ví dụ.

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

Mọi đề xuất?

+0

Lưu ý: Tôi hiện đang xây dựng sử dụng process.argv với thông số, chủ yếu là tương tác mà tôi đang cố gắng xây dựng – Brett

Trả lời

12

Tôi đoán commander.js là thứ bạn đang tìm kiếm.

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

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

Cũng có một cái nhìn tại REPL http://nodejs.org/api/repl.html

+0

Cảm ơn vinayr. REPL sẽ hoạt động tốt. – Brett

+2

Inquirer có vẻ là một lựa chọn tốt đẹp, với xác nhận và lời nhắc tốt đẹp: https://github.com/SBoudrias/Inquirer.js/ – berdario

+0

Chỉ cho tôi biết 'commander.js' tương tác như thế nào? Nó không thể làm gì ngoài việc chấp nhận các tùy chọn cli '$ myscript.js -foo -bar -baz'. Không có gì tương tác. Tại sao bạn đề xuất nó? – Green

3

Tôi vừa mới bắt đầu một dự án cho một REPL tăng cường cung cấp các plugin và hỗ trợ đa ngôn ngữ (như CoffeeScript):

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

Nó có thể hữu ích f hoặc bạn khi xây dựng các ứng dụng tương tác. Hãy cho tôi biết nếu bạn muốn xem bất kỳ tính năng nào trong Nesh!

+0

sẽ có một cái nhìn vào nó, cảm ơn Daniel. – Brett

0

Câu hỏi này là một chút cũ, nhưng tôi đã đưa ra một số dặm để một module tôi đã xây dựng một thời gian trước đó sẽ khởi động một vỏ giống như command prompt tương tác:

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

Sự khác biệt quan trọng để điều này trên một cái gì đó như chỉ huy là nó cho phép bạn duy trì trạng thái phiên shell và chấp nhận các lệnh bên trong trong Node.js, trái ngược với việc yêu cầu mọi lời gọi lại là trạng thái chạy lại không trạng thái với các đối số được phân tích cú pháp của trình bao. Nó có hiệu quả kết thúc tốt đẹp readline mô-đun nội nút để cung cấp: phân tích

  • vỏ giống như của đầu vào
  • đa dòng lệnh hỗ trợ bởi thoát mới-line hoặc trích dẫn trên nó
  • hỗ trợ lịch sử lệnh (khi sử dụng readcommand.loop)
  • lập luận dựa trên tính năng tự động hoàn chỉnh (quấn quanh readline s dựa trên văn bản hỗ trợ auto-complete

Hy vọng người khác cũng thấy nó hữu ích.

Để có khung CLI tương tác nâng cao và được đánh giá cao hơn, tôi cũng đã xây dựng node-corporal: https://github.com/mrvisser/node-corporal. Đó có lẽ là nhiều hơn bạn đang tìm kiếm, nhưng nó cung cấp một cấu trúc và môi trường để cùng nhau ứng dụng CLI.

5

Vorpal là khung chính xác cho câu hỏi mô tả, mặc dù họ gọi nó là '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(); 
Các vấn đề liên quan