2012-12-01 3 views
14

Non avendo alcuna esperienza con divano e redis, questo sta diventando più di quanto io possa gestire a questo punto.Come ottenere tutti i pacchetti npm che corrispondono a una determinata parola chiave in formato JSON?

Il sito NPM permette di cercare per i pacchetti da una parola chiave - https://npmjs.org/browse/keyword/awesome

Tuttavia, doen't fornire alcun modo per ottenere queste informazioni in formato JSON - idealmente, potremmo fare solo https://npmjs.org/browse/keyword/awesome.json, ma che non è il caso :(

so che il sito NPM è alimentato da CouchDB e un'istanza di Redis locale. l'installazione CouchDB remoto è http://registry.npmjs.org/ e alimentato da https://github.com/isaacs/npmjs.org

Tuttavia, la spesa il giorno cercando in questo, proprio non posso figur Scopri come ottenere tutti i pacchetti di una determinata parola chiave. Qualcuno sa come? Punti bonus se spieghi anche la procedura da seguire per sapere come farlo, quindi lo so per la prossima volta :)

+0

Questo è il progetto che ho creato per questo caso d'uso https://github.com/bevry/pluginclerk – balupton

risposta

22

Ottima domanda!

Questo vi darà quello che stai cercando per circa un modulo specifico:

npm view request

per ottenere ciò che si desidera per tutti i moduli si può colpire l'URL: https://registry.npmjs.org/-/all/

Dopo versando attraverso questi due file:

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

sono arrivato alle seguenti conclusioni:

  1. Sono super sorpreso che non ci sia un modo migliore per fare ricerca senza colpire direttamente CouchDB.
  2. La riga di comando client NPM fa ricerca all'interno di node.js di classificare e filtrare attraverso la piena risultati di tale/all/di ricerca sopra elencati.
  3. Il sito Web non si preoccupa nemmeno della ricerca reale mentre lo impegna su un motore di ricerca
  4. La ricerca per parola chiave che si desidera non ottiene gli stessi risultati di NPM da riga di comando. E 'davvero di portata limitata all'attributo parola chiave, possono essere disponibili attraverso (vedi search.js di cui sopra)
  5. La query è andare a guardare davvero strano altre opzioni di ricerca.

Prova questo: https://registry.npmjs.org/-/_view/byKeyword?startkey=["keyword"]&endkey=["keyword",{}]&group_level=3

Inoltre, una breve nota, questo è il tipo di domanda che probabilmente ottenere una risposta in sala node.js chat o mailing list in circa 4 secondi :)

Spero che questo aiuti.

+0

YATAAAA! Grazie mille! Amico, sei il mio eroe in questo momento. Btw, provato il canale IRC ma nessuno ha detto nulla, non si è reso conto che la gente usava la mailing list - qual è il vantaggio di questo over stackoverflow? Ancora una volta, grazie mille! – balupton

+0

C'è un modo per ottenere i risultati per includere l'intero package.json? Felice di farlo come un post diverso, supponendo che devo interrogare ogni individuo, non tanto di un biggie. – balupton

+0

Sicuramente prova la mailing list del nodo. Le persone che rispondono in tale elenco sono i principali programmatori di nodi e dubito che molti di loro vengano su StackOverflow –

2

Sulla base di questa risposta ho scritto un piccolo lib per il nodo, https://github.com/wires/npm-keywordsearch.

npm install npm-keywordsearch

poi

var search = require('npm-keywordsearch') 

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

Forse utile per voi

+0

Adoro il modulo ... vorrei controllare il mio 'npm config' per cose come' registry', anche se ... creerà un problema .. –

+0

fantastico! se puoi descrivere cosa dovrebbe fare e magari fare riferimento ad alcuni documenti, vedrò cosa posso fare – wires