出于研究目的,我想列出npm上可用的所有软件包.我怎样才能做到这一点?
https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-all中的一些旧文档提到了一个/-/all可能曾经工作的端点,但是http://registry.npmjs.org/ - /现在只返回{"message":"deprecated"}.
Mar*_*ery 15
http://blog.npmjs.org/post/157615772423/deprecating-the-all-registry-endpoint描述了对http://registry.npmjs.org/-/all端点的弃用,以及https上教程的链接://github.com/npm/registry/blob/master/docs/follower.md作为一种替代的方法.该教程描述了如何设置"跟随者",以接收对NPM注册表所做的所有更改.那是......有点奇怪,说实话.显然,这样的跟随者并非获得所有包的列表,如果你想对整个生态系统NPM做数据分析的足够的替代品.
但是,在该代码库中,我们了解到NPM注册中心的核心是位于https://replicate.npmjs.com的CouchDB数据库.该_all_docs端点不是禁用的,所以我们可以打它https://replicate.npmjs.com/_all_docs取回一个JSON对象,其rows属性包含在NPM所有公共包的列表.每个包看起来像:
{"id":"lodash","key":"lodash","value":{"rev":"634-9273a19c245f088da22a9e4acbabc213"}},
Run Code Online (Sandbox Code Playgroud)
在我写这篇文章时,该响应中有618660行,大约为64MB.
如果您想了解有关特定软件包的更多数据,可以使用它查找特定软件包key- 例如,点击https://replicate.npmjs.com/lodash获取包含Lodash描述和发布历史等内容的大型文档.
如果您需要有关所有包的所有当前数据,可以使用该include_docs参数_all_docs在响应中包含实际文档主体 - 即点击https://replicate.npmjs.com/_all_docs?include_docs=true.准备好了很多数据.
如果您需要更多数据,例如下载次数,这些数据未包含在这些CouchDB文档中,那么值得仔细阅读https://github.com/npm/registry/tree/master/docs上的文档,其中详细介绍了其他一些文档.API - 在问题中指出,需要注意的是,并非所有文档都能正常运行.
| 归档时间: |
|
| 查看次数: |
3301 次 |
| 最近记录: |