Подтвердить что ты не робот

Запрос реестра npmjs через api

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Существует действительно хороший сайт запросов npm https://npms.io, который я годами использую в своем веб-проекте. Это проект с открытым исходным кодом и поддерживает расширенный поиск с улучшенным качеством результатов по ключевым словам.

У них есть система оценки для каждого пакета, используя собранную информацию о проекте. Окончательная оценка рассчитывается на основе четырех различных аспектов качества, обслуживания, популярности и личности.

Он также имеет очень аккуратный REST API.
API Doc: https://api-docs.npms.io

Ответ 3

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

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

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

Ответ 4

https://skimdb.npmjs.com/registry/_all_docs

Это текущий метод для извлечения всех имен пакетов.

Поиск по URL http://registry.npmjs.com/-/v1/search?text=<searchstring>&size=20

Ответ 5

Если вы не можете найти пакет или просто взламываете сценарий оболочки, Документы реестра API в реестре git-репозиторий содержат подробную информацию об 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 в репозитории ряд других полезных вещей, таких как:

Ответ 6

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

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

Ответ 7

Я знаю, что этот ответ старый, но некоторые все еще могут найти его актуальным, так:

После долгих поисков я наконец-то нашел что-то. Решение не использует API-интерфейс NPM из-за плохой документации и множества других недостатков, которые у него есть.

(Это будет полезно для других случаев, кроме поиска, например получения списка популярных пакетов (что мне было нужно))

Решение состоит в том, чтобы использовать Libraries.io

Libraries.io indexes data from 4,273,741 packages from 36 package managers. (Including NPM) From Libraries.io page

Он имеет отличный API и хорошую документацию, а также имеет оболочку API на нескольких языках


Вы можете посмотреть на мою программу CLI, которая использует эту библиотеку здесь

Ответ 8

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

Ответ 9

Документы уже здесь: https://github.com/npm/registry/blob/master/docs/download-counts.md

Конечная точка загрузок

Получает общее количество загрузок за указанный период для всех пакетов или определенного пакета.

GET https://api.npmjs.org/downloads/point/{period}[/{package}]

Примеры

  Все пакеты, последний день:
  /Загрузки/точка/последний день
  Все пакеты, конкретная дата:
  /Загрузки/точка /2014-02-01
  Пакет "Экспресс", на прошлой неделе:
  /Загрузки/точка/последняя неделя/экспресс
  Пакет "Экспресс", предоставляется 7-дневный срок:
  /Загрузки/точка /2014-02-01: 2014-02-08/выразить
  Пакет "@slack/client", последние 30 дней:
  /Загрузки/точка/последний месяц/@слабина/клиент
  Пакет "jquery", определенный месяц:
  /Загрузки/точка /2014-01-01: 2014-01-31/JQuery