14

カウチとレディスの経験がないので、これは現時点で私が処理できる範囲を超えています。

npm Web サイトでは、キーワードでパッケージを検索できます - https://npmjs.org/browse/keyword/awesome

ただし、この情報をjson形式で取得する方法は提供していません-理想的には、 https: //npmjs.org/browse/keyword/awesome.jsonを実行できますが、そうではありません:(

npm Web サイトは、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/

これらの 2 つのファイルを処理した後:

  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

また、簡単なメモとして、これは node.js チャット ルームまたはメーリング リストで約 4 秒で回答が得られる種類の質問です:)

それが役立つことを願っています。

于 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 は API を廃止しました/-/_view/byKeyword

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 に答える