2012-10-17 20 views
11

इसके लिए googling और stackoverflow खोज रहा है, लेकिन कुछ भी नहीं आ रहा है। मैं नोड के साथ एक इंटरेक्टिव खोल विकसित करना चाहता हूं, और इसके लिए सबसे अच्छा तरीका सोच रहा हूं। क्या कोई पुस्तकालय है जो कोई भी उपयोग करने की सिफारिश कर सकता है?नोडज लाइब्रेरी/मॉड्यूल?

मैंने एक लाइब्रेरी लिखी है, और अब एक सीएलआई इंटरफेस को इसके साथ दो तरीकों से बातचीत करना चाहते हैं: पैरामीटर के साथ ऐप चला रहा है, या इंटरैक्टिव शैल के माध्यम से। जैसे

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

कोई सुझाव?

+0

एक नोट: मैं वर्तमान में, पैरामीटर के साथ process.argv का उपयोग कर निर्माण कर रहा हूँ इसके मुख्य रूप से interactiveness कि मैं – Brett

उत्तर

12

मुझे लगता है कि commander.js वह है जिसे आप ढूंढ रहे हैं।

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

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

इसके अलावा आरईपीएल पर एक नज़र http://nodejs.org/api/repl.html

+0

धन्यवाद vinayr का निर्माण करने की कोशिश कर रहा हूँ। आरईपीएल महान काम करना चाहिए। – Brett

+2

पूछताछ एक अच्छा विकल्प प्रतीत होता है, सत्यापन और अच्छे संकेतों के साथ: https://github.com/SBoudrias/Inquirer.js/ – berdario

+0

केवल मुझे बताएं कि कैसे 'commander.js' इंटरैक्टिव है? यह कुछ भी नहीं कर सकता है लेकिन क्ली विकल्प '$ myscript.js -foo -bar -baz' स्वीकार करता है। कुछ भी इंटरैक्टिव नहीं है। आपने इसका सुझाव क्यों दिया? – Green

3

मैं हाल ही में एक बेहतर आरईपीएल कि प्लग इन और (CoffeeScript की तरह) बहु भाषा समर्थन प्रदान करता है के लिए एक परियोजना शुरू कर दिया है है:

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

यह उपयोगी हो सकता है f या आप इंटरैक्टिव ऐप्स बनाते समय। अगर आप नेश में कोई विशेषताओं को देखना चाहते हैं तो मुझे बताएं!

+0

इसे देखेंगे, धन्यवाद डैनियल। – Brett

0

यह सवाल थोड़ा पुराना है, लेकिन मुझे लगता है कि एक इंटरैक्टिव खोल की तरह कमांड प्रॉम्प्ट का शुभारंभ करेंगे एक मॉड्यूल मैंने कुछ समय पहले बनाया करने के लिए कुछ लाभ दिया है:

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

के लिए महत्वपूर्ण अंतर यह कमांडर की तरह कुछ है, यह आपको शेल सत्र स्थिति को बनाए रखने और आंतरिक रूप से Node.js में आदेशों को स्वीकार करने की अनुमति देता है, क्योंकि प्रत्येक आमंत्रण को खोल के पार्स किए गए तर्कों के साथ एक स्टेटलेस पुनः चलाने की आवश्यकता होती है। इसे प्रभावी ढंग से प्रदान करने के लिए नोड के आंतरिक readline मॉड्यूल लपेटता: इनपुट के पार्स

  • खोल की तरह नई लाइन से बचने या
  • आदेश इतिहास समर्थन इस पर उद्धृत करके
  • बहु लाइन आदेश का समर्थन (का उपयोग करते समय readcommand.loop)
  • तर्क आधारित स्वत: पूर्ण (करीब readline रों पाठ आधारित स्वत: पूर्ण समर्थन

उम्मीद किसी और लिपटे यह भी उपयोगी लगता है।

अधिक उन्नत और विचारशील इंटरैक्टिव सीएलआई ढांचे के लिए, मैंने node-corporal: https://github.com/mrvisser/node-corporal भी बनाया। जो संभवतः आप ढूंढ रहे हैं उससे अधिक है, लेकिन यह सीएलआई ऐप्स को एक साथ जोड़ने के लिए एक संरचना और पर्यावरण प्रदान करता है।

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(); 
संबंधित मुद्दे