https://www.npmjs.com/ での検索の順序付けと表現力に満足していないことがよくあります。 https://api.npmjs.org/ または http://registry.npmjs.org/ を使用して、プログラムでサーバーをクエリする方法があるはずです。しかし、どのように?ドキュメントはどこにありますか?
(または、それを容易にするノードパッケージはありますか?SOはツールまたはパッケージの推奨事項ではないので、おそらくこれについて尋ねるべきではありませんが、何らかのツールがあれば、おそらくそこからAPIを読み取ることができます。)
もちろん、そのレジストリと通信するように設計されたツールが少なくとも1つあり、それはnpm
コマンドラインツール自体です。その search は、たとえば、インデックスのローカルキャッシュコピーを更新し、それをフィルタリングすることから始まります。 pdate-index では、/-/all
で終わるURLは明らかに特別であることがわかります。そして実際、それをregistry.npmjs.org
(意図的にリンクとしてフォーマットされていない)に追加すると、125Mファイルをフェッチしますが、これはブラウザにとっては大きすぎるかもしれません。幸いなことに、キャッシュバージョンは~/.npm/registry.npmjs.org/-/all/.cache.json
に保存されています。そこから、すべてのnownパッケージのリストを読むことができます。その後、このような各パッケージをさらに詳細に照会し続けることができます。
npm search
が明らかに精巧なスキームを使用していないという事実は、ここにはサーバーサイドAPIがあまりないことを示唆しています。
api.npmjs.org
に言及しているページをWebで検索すると、そこから ダウンロード数 を取得できることがわかりました。私が見つけた他のすべての文書は、その単一の機能を利用しています。
代替手段を探して、私はまた偶然見つけました npmsearch.com これはいくつかのより多目的な検索機能を提供し、 やや文書化されたAPI を持っています。
最近、本当に良いnpmクエリサイトが見つかりました https://npms.io 。また、さまざまなデータに基づいて各パッケージの品質ポイントシステムがあります。
また、プロジェクトについて収集された情報を使用して、各パッケージのスコアリングシステムも用意されます。最終スコアは、品質、メンテナンス、人気、性格の4つの異なる側面に基づいて計算されます。
APIドキュメント: https://api-docs.npms.io
常にNPMレジストリクライアントを使用できます: https://github.com/npm/npm-registry-client 。
これに目を通すと、APIのエンドポイントを取得できます。たとえば、パッケージのdist-tagsを取得するには、/-/ package/packageName/dist-tags 'に移動できます
Babel-core distタグを取得するには、 http://registry.npmjs.org/-/package/babel-core/dist-tags に移動します
https://skimdb.npmjs.com/registry/_all_docs
これは、すべてのパッケージ名を取得する現在の方法です。
URL検索はhttp://registry.npmjs.com/-/v1/search?text=<searchstring>&size=20
パッケージが見つからない場合、または単にシェルスクリプトをハッキングしている場合は、レジストリの Registry API Docs に git repository Search APIと検索修飾子の詳細情報を含めます。
パブリックレジストリで最も一般的な安全でないパッケージを探している場合は、次を実行します。
wget -qO - "http://registry.npmjs.com/-/v1/search?text=is:insecure&popularity=1.0&size=1"
上記では、追加テキスト条件なしでis:insecure
検索修飾子を使用し、size=1
(最も人気のある)のpopularity=1.0
結果を取得します。
リポジトリ内の docs
ディレクトリ をチェックインして、次のようなその他の便利なものを探してください。
Sinopiaレジストリインターフェースをご覧ください: https://github.com/rlidwka/sinopia/blob/master/lib/index-api.js 。 npmクライアントのデフォルトのレジストリは https://registry.npmjs.org です(コンソールで試してください:npm config ls -l)。そのため、以下を試して(sinopia APIを参照)、react 15.0.2に関するデータを取得できます。
私はこの答えが古いことを知っていますが、一部の人はまだそれが関連することを見つけることができます:
多くの検索の後、私は最終的に何かを見つけました。ソリューションは悪いドキュメントとそれが持っているより多くの欠点のためにNPM APIを使用しません
(これは、人気のあるパッケージ(必要なもの)のリストを取得するなど、検索以外の他の用途にも役立ちます)
解決策は Libraries.ioを使用することです
Libraries.ioは、36個のパッケージマネージャーの4,273,741個のパッケージのデータにインデックスを付けます。 (NPMを含む)From Libraries.ioページ
優れたAPIと優れたドキュメントがあり、いくつかの言語のAPIラッパーもあります
そのライブラリを使用するCLIプログラムをご覧ください here
Api-npmノードモジュールを使用して、NPMレジストリを直接照会し、モジュールのすべての属性を取得し、任意の時間範囲の任意のモジュールの統計をダウンロードできます https://www.npmjs.com/package/api -npm
ドキュメントはここにあります: https://github.com/npm/registry/blob/master/docs/download-counts.md
すべてのパッケージまたは特定のパッケージについて、指定された期間の合計ダウンロードを取得します。
GET https://api.npmjs.org/downloads/point/{period}[/{package}]