14

对沙发和 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提供支持

然而,花了一天的时间研究这个,我只是无法弄清楚如何获取特定关键字的所有包。有谁知道怎么做?如果您还解释了您寻找如何去做的过程,那么我会知道下一次:)

4

3 回答 3

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

我得出以下结论:

  1. 我非常惊讶没有更好的方法来进行搜索而不直接点击 couchdb。
  2. 命令行 NPM 客户端通过对上面列出的 /all/ 搜索的完整结果进行排序和过滤,在 node.js 内部进行搜索。
  3. 该网站甚至不打扰真正的搜索,因为它将它典当给搜索引擎
  4. 您想要的按关键字搜索不会得到与命令行 NPM 相同的结果。它实际上仅限于关键字属性的范围,其他搜索选项可以通过(参见上面的 search.js)
  5. 查询看起来很奇怪。

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

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

希望有帮助。

于 2012-12-01T07:51:49.127 回答
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)
  })
})

也许对你有用

于 2016-02-22T02:50:26.243 回答
1

2018 年的某个时候,npm 停用/-/_view/byKeywordAPI:

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 来命中该调用,同时提供缓存以及依赖兼容性解决方案。

于 2017-02-27T04:19:43.747 回答