如何获取与JSON格式的特定关键字匹配的所有npm包?

时间:2012-12-01 06:46:44

标签: couchdb npm

对沙发和redis没有任何经验,这在这一点上变得比我能处理的更多。

npm网站允许您按关键字搜索包 - https://npmjs.org/browse/keyword/awesome

但是,它没有提供以json格式获取此信息的任何方式 - 理想情况下,我们可以https://npmjs.org/browse/keyword/awesome.json但事实并非如此:(

我知道npm网站是由couchdb和本地redis实例提供支持的。远程couchdb安装为http://registry.npmjs.org/,由https://github.com/isaacs/npmjs.org

提供支持

然而,花一天时间研究这个,我只是想不通如何获得特定关键字的所有包。有谁知道怎么样?如果你还解释了你去了解如何做到这一过程的过程,那么下次我知道:)

3 个答案:

答案 0 :(得分:22)

很棒的问题!

这将为您提供有关特定模块的信息:

npm view request

要获得您想要的所有模块,您可以点击URL: https://registry.npmjs.org/-/all/

在倾注了这两个文件之后:

  1. https://github.com/isaacs/npm/blob/master/lib/search.js
  2. https://github.com/isaacs/npm-www/blob/master/models/browse.js
  3. 我得出以下结论:

    1. 我非常惊讶没有更好的方法来直接点击couchdb进行搜索。
    2. 命令行NPM客户端通过对上面列出的/ all / search的完整结果进行排序和过滤来搜索node.js内部。
    3. 该网站甚至没有真正的搜索,因为它将其典当到搜索引擎
    4. 您想要的关键字搜索结果与命令行NPM无法获得相同的结果。它的范围实际上与关键字属性有限,其他搜索选项可以通过(参见上面的search.js)
    5. 查询看起来很奇怪。
    6. 试试这个: https://registry.npmjs.org/-/_view/byKeyword?startkey=["keyword"]&endkey=["keyword",{}]&group_level=3

      另外,快速说明一下,这是一个可能在大约4秒内在node.js聊天室或邮件列表中得到解答的问题:)

      希望有所帮助。

答案 1 :(得分:2)

基于这个答案,我为节点https://github.com/wires/npm-keywordsearch写了一个小的lib。

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)
  })
})

对你有用

答案 2 :(得分:0)

2018年的某个时间,npm retired /-/_view/byKeyword API:

  

https://registry.npmjs.org/-/_view/byKeyword?startkey=%5B%22docpad-plugin%22%5D&endkey=%5B%22docpad-plugin%22,%7B%7D%5D&group_level=2

新API现在是:/-/v1/search

  

https://registry.npmjs.org/-/v1/search?text=keywords:docpad-plugin&size=250

它的文档在这里:

  

https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search

我已相应更新pluginclerk包。它是一个节点包,它提供了一个API来命中该调用,同时提供缓存以及依赖性兼容性解析。