2012-12-01 35 views
14

सोफे और रेडिस के साथ कोई अनुभव नहीं है, यह इस बिंदु पर मैं संभालने से कहीं अधिक हो रहा हूं।जेएसओएन प्रारूप में किसी विशेष कीवर्ड से मेल खाने वाले सभी एनपीएम पैकेज कैसे प्राप्त करें?

NPM वेबसाइट यदि आप एक कीवर्ड द्वारा संकुल के लिए खोज करने के लिए अनुमति देता है - https://npmjs.org/browse/keyword/awesome

हालांकि, यह json प्रारूप में यह जानकारी प्राप्त करने के लिए किसी भी तरह प्रदान doen't - आदर्श है, हम बस https://npmjs.org/browse/keyword/awesome.json कर सकता है, लेकिन वह नहीं है मामले :(

मुझे पता है कि NPM वेबसाइट CouchDB और एक स्थानीय redis उदाहरण द्वारा संचालित है। दूरस्थ CouchDB स्थापना http://registry.npmjs.org/ है और https://github.com/isaacs/npmjs.org

द्वारा संचालित हालांकि, दिन बिताने के इस में देख, मैं सिर्फ नहीं कर सकते figur किसी विशेष कीवर्ड के सभी पैकेज कैसे प्राप्त करें। क्या किसी को पता है कि कैसे? बोनस पॉइंट्स यदि आप इस प्रक्रिया को भी समझते हैं कि आप इसे कैसे करना है, तो मुझे पता चल गया है कि मुझे अगली बार पता है :)

+0

यह प्रोजेक्ट है जिसे मैंने इस उपयोग के मामले के लिए बनाया है https://github.com/bevry/pluginclerk – balupton

उत्तर

22

शानदार सवाल!

यह आपको दे देंगे आप के बारे में एक विशिष्ट मॉड्यूल जो खोज रहे हैं: https://registry.npmjs.org/-/all/

के बाद:

npm view request

आप क्या चाहते हैं सभी मॉड्यूल के लिए आप URL हिट कर सकते हैं प्राप्त करने के लिए इन दो फाइलों के माध्यम से डालना:

  1. https://github.com/isaacs/npm/blob/master/lib/search.js
  2. https://github.com/isaacs/npm-www/blob/master/models/browse.js

मैं निम्नलिखित निष्कर्ष के लिए आया था:

  1. मैं सुपर वहाँ CouchDB सीधे टकराने के बिना खोज करने के लिए एक बेहतर तरीका नहीं है हैरान हूँ।
  2. कमांड लाइन एनपीएम क्लाइंट ऊपर सूचीबद्ध/सभी/खोज के पूर्ण परिणामों के माध्यम से सॉर्टिंग और फ़िल्टर करके node.js के अंदर खोज करता है।
  3. वेबसाइट वास्तविक खोज से भी परेशान नहीं है क्योंकि यह इसे एक खोज इंजन के लिए प्रेरित करती है
  4. आपके द्वारा इच्छित कीवर्ड चीज़ की खोज कमांड लाइन एनपीएम के समान परिणाम नहीं मिलती है। यह वास्तव में कीवर्ड विशेषता के दायरे में सीमित है, अन्य खोज विकल्प उपलब्ध हो सकते हैं (ऊपर search.js देखें)
  5. क्वेरी वास्तव में अजीब लग रही है।

इस प्रयास करें: https://registry.npmjs.org/-/_view/byKeyword?startkey=["keyword"]&endkey=["keyword",{}]&group_level=3

इसके अलावा, एक त्वरित ध्यान दें, यह है कि शायद के बारे में 4 सेकंड में Node.js चैट रुम या मेलिंग सूची में दिए जायेगा सवाल की तरह :)

है

आशा है कि मदद करता है।

+0

YATAAAA! बहुत बहुत धन्यवाद! मैन, तुम अभी मेरे नायक हो। बीटीडब्ल्यू ने आईआरसी चैनल की कोशिश की लेकिन किसी ने भी कुछ भी नहीं कहा, लोगों को मेलिंग सूची का उपयोग करने का एहसास नहीं हुआ - स्टैक ओवरफ्लो पर इसका क्या फायदा है? फिर, बहुत बहुत धन्यवाद! – balupton

+0

क्या पूरे पैकेज.जेसन को शामिल करने के लिए परिणाम प्राप्त करने का कोई तरीका है? एक अलग पद के रूप में ऐसा करने में प्रसन्नता हो रही है, अनुमान लगाया है कि मुझे प्रत्येक व्यक्ति से पूछताछ करना है, न कि एक बड़ी बात है। – balupton

+0

निश्चित रूप से नोड मेलिंग सूची आज़माएं। जो लोग उस सूची में प्रतिक्रिया देते हैं वे मुख्य नोड प्रोग्रामर हैं और मुझे संदेह है कि यदि वे मॉड्यूल का नाम जानते हैं तो आप स्टैक ओवरफ्लो –

2

इस उत्तर के आधार पर मैंने नोड, https://github.com/wires/npm-keywordsearch के लिए एक छोटी सी लिब लिखी।

npm install npm-keywordsearch

तो

var search = require('npm-keywordsearch') 

search('my-plugin', function (error, packages) { 
    packages.forEach(function (pkg) { 
    console.log(pkg.name + ': ' + pkg.description) 
    }) 
}) 

शायद उपयोगी के लिए आप

+0

मॉड्यूल से प्यार करेगी .. इच्छा है कि यह 'रजिस्ट्री' जैसी चीजों के लिए मेरी 'एनपीएम कॉन्फ़िगरेशन' की जांच करे, हालांकि ... कोई समस्या उत्पन्न होगी .. –

+0

बढ़िया! यदि आप वर्णन कर सकते हैं कि इसे क्या करना चाहिए और शायद कुछ दस्तावेज़ों का संदर्भ लें तो मैं देखूंगा कि मैं क्या कर सकता हूं – wires

0

एक प्लगइन प्रणाली को लागू करने के उद्देश्य से इस का अनुरोध उन लोगों के लिए, मैं https://github.com/bevry/pluginclerkregistry endpoint answer के आधार पर किया है। यह आपकी वर्तमान निर्भरताओं के आधार पर संगतता जैसी चीजों को संभालेगा, साथ ही साथ कैशिंग परत लागू करेगा।