2015-12-03 4 views
14

Я нахожу, что часто не удовлетворен заказом и выразительностью запросов на https://www.npmjs.com/. Я предполагаю, что должен быть способ программно запросить сервер, используя https://api.npmjs.org/ или http://registry.npmjs.org/. Но как? Где документация?Запрос реестра npmjs через api

(Или есть пакеты узлов, чтобы облегчить это? Я знаю, что SO не касается рекомендаций инструмента или пакета, поэтому, возможно, я не должен спрашивать об этом, но если бы был какой-то инструмент, API от этого также.)

ответ

16

Конечно, есть хотя бы один инструмент, предназначенный для общения с этим реестром, и это сам инструмент командной строки npm. Например, его search начинается с обновления локальной кешированной копии индекса, отфильтровывая это. В update-index можно прочитать, что URL-адрес, заканчивающийся на /-/all, по-видимому, особенный. И действительно, добавив, что к registry.npmjs.org (намеренно не отформатирован как ссылка), вы получите 125M-файл, который может быть слишком большим для вашего браузера. К счастью, кэшированная версия сохраняется в ~/.npm/registry.npmjs.org/-/all/.cache.json. Оттуда можно прочитать список всех доступных пакетов. Затем можно продолжить более подробно запрашивать каждый такой пакет.

Тот факт, что npm search, по-видимому, не использует более сложную схему, предполагает, что здесь не так много ави здесь на стороне сервера.

Поиск в Интернете для ссылок на страницы api.npmjs.org Я обнаружил, что download counts можно получить оттуда. Все другие документы, которые я нашел, используют этот единственный объект.

Ищем альтернативы, я также наткнулся на npmsearch.com, который предлагает еще несколько универсальных средств поиска и имеет a somewhat documented API.

+1

https://registry.npmjs.org/-/all просто возвращает '{ "сообщение": "устаревшее"}' в настоящее время. Я предлагаю не принимать этот ответ. –

6

Вы всегда можете использовать клиент реестра NPM: https://github.com/npm/npm-registry-client.

Если вы посмотрите на это, вы можете получить конечные точки API. например, чтобы получить Расс-теги для пакета, то вы можете пойти в/-/пакет/PACKAGENAME/Расс-метки

Так, чтобы получить столпотворение-ядро DIST теги вы бы пойти в http://registry.npmjs.org/-/package/babel-core/dist-tags

1

You можно использовать модуль узла апи-НПМ он непосредственно запрашивает реестр НПМ, и вы можете получить все атрибуты модуля и загрузки стат любого модуля любого временного диапазона https://www.npmjs.com/package/api-npm

+0

Это похоже на хороший старт, но есть намного больше данных, которые вы можете пожелать. Планируете ли вы улучшить пакет? –

3

Посмотрите на интерфейс реестра синопия: https://github.com/rlidwka/sinopia/blob/master/lib/index-api.js. Реестр по умолчанию для клиента npm - https://registry.npmjs.org (попробуйте его на консоли: npm config ls -l). Таким образом, вы можете попробовать следующее (ссылающийся на синопию API) для получения данных о реакции 15.0.2

https://registry.npmjs.org/react/15.0.2

5

Recenty нашел действительно хороший НПМ сайта запроса https://npms.io. Они также имеют системы точек качества для каждого пакета на основе различных данных. Но эти данные будут составлять от нескольких дней за
API Doc: https://api-docs.npms.io