node.js - node - Consulta el registro npmjs a través de api
mongodb node js api (7)
A menudo me siento insatisfecho con el orden y la expresividad de las búsquedas en https://www.npmjs.com/ . Supongo que debería haber una forma de consultar programáticamente el servidor usando https://api.npmjs.org/ o http://registry.npmjs.org/ . ¿Pero cómo? ¿Dónde está la documentación?
(¿O hay paquetes de nodos para facilitar eso? Sé que SO no se trata de recomendaciones de herramientas o paquetes, por lo que quizás no debería preguntar por esto también, pero si hubiera alguna herramienta, probablemente podría leer la API desde ese punto). también.)
Eche un vistazo a la interfaz del registro de sinopia: https://github.com/rlidwka/sinopia/blob/master/lib/index-api.js . El registro predeterminado para el cliente npm es https://registry.npmjs.org (pruébelo en la consola: npm config ls -l). Así que puedes probar lo siguiente (haciendo referencia a la API de sinopia) para obtener datos sobre la reacción 15.0.2
Puede usar el módulo de nodo api-npm; consulta directamente el registro de NPM y puede obtener todos los atributos de un módulo y descargar las estadísticas de cualquier módulo de cualquier rango de tiempo https://www.npmjs.com/package/api-npm
Recientemente encontré un sitio de consulta npm realmente bueno https://npms.io . También tienen sistemas de puntos de calidad para cada paquete basados en diversos datos.
También tendrán un sistema de puntuación para cada paquete con la información recopilada sobre el proyecto. La puntuación final se calcula en base a cuatro aspectos diferentes de Calidad, Mantenimiento, Popularidad y Personalidades.
API Doc: https://api-docs.npms.io
Si no puede encontrar un paquete o simplemente está pirateando un script de shell, los documentos de la API de registro en el repositorio git del registro incluyen información sobre la API de búsqueda y calificadores de búsqueda especiales.
Si está buscando el paquete inseguro más popular en la ejecución del registro público:
wget -qO - "http://registry.npmjs.com/-/v1/search?text=is:insecure&popularity=1.0&size=1"
Lo anterior usa el calificador de búsqueda is:insecure
sin ningún criterio de texto adicional y obtiene resultados de size=1
donde popularity=1.0
(el más popular).
Consulte el directorio de docs
en el repositorio para ver otras cosas útiles como:
- Una lista detallada de los metadatos del paquete de respuesta.
- Una API de replicación para paquetes con y sin ámbito.
- Y la información sobre cómo obtener descargas cuenta .
- Tutorial completo sobre cómo crear un seguidor de registro.
Siempre puede utilizar el cliente de registro NPM: https://github.com/npm/npm-registry-client .
Si observa esto, puede obtener los puntos finales para la API. por ejemplo, para obtener las etiquetas dist para un paquete, puede ir a / - / package / packageName / dist-tags ''
Así que para obtener las etiquetas dist de babel-core irías a http://registry.npmjs.org/-/package/babel-core/dist-tags
https://skimdb.npmjs.com/registry/_all_docs
Este es un método actual para extraer todos los nombres de paquetes.
La búsqueda de URL es http://registry.npmjs.com/-/v1/search?text=<searchstring>&size=20
Por supuesto, hay al menos una herramienta diseñada para comunicarse con ese registro, y esa es la propia herramienta de línea de comandos npm
. Su search de ejemplo comienza actualizando una copia local en caché del índice, filtrando eso. En update-index se puede leer que la URL que termina en /-/all
es aparentemente especial. Y, de hecho, al agregar esto a registry.npmjs.org
(deliberadamente no formateado como un enlace) se buscará un archivo 125M que podría ser demasiado para su navegador. Afortunadamente, la versión en caché se almacena disponible en ~/.npm/registry.npmjs.org/-/all/.cache.json
. Desde allí se puede leer una lista de todos los paquetes desconocidos. Uno podría entonces continuar consultando cada paquete con más detalle.
El hecho de que la npm search
aparentemente no usa un esquema más elaborado sugiere que no hay mucho de una API del lado del servidor aquí.
Buscando en la web páginas que mencionan api.npmjs.org
, encontré que los recuentos de descargas se pueden recuperar desde allí. Todos los demás documentos que encontré hacen uso de esa única instalación.
Buscando alternativas, también me topé con npmsearch.com que ofrece algunas npmsearch.com búsqueda más versátiles y tiene una API algo documentada .