Как получить все пакеты npm, соответствующие конкретному ключевому слову в формате JSON? - программирование
Подтвердить что ты не робот

Как получить все пакеты npm, соответствующие конкретному ключевому слову в формате JSON?

Не имея опыта с кушеткой и 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

Однако, проведя день, изучая это, я просто не могу понять, как получить все пакеты определенного ключевого слова. Кто-нибудь знает как? Бонусные баллы, если вы также объясните процесс, который вы выяснили, как это сделать, чтобы я знал в следующий раз:)

4b9b3361

Ответ 1

Отличный вопрос!

Это даст вам то, что вы ищете о конкретном модуле:

npm view request

Чтобы получить то, что вы хотите для всех модулей, вы можете нажать на URL: https://registry.npmjs.org/-/all/

После заливки этих двух файлов:

Я пришел к следующим выводам:

  • Я очень удивлен, что нет лучшего способа сделать поиск без прямого удара couchdb.
  • Клиент NPM из командной строки выполняет поиск внутри node.js путем сортировки и фильтрации по полному результату этого /all/search, указанного выше.
  • Веб-сайт даже не беспокоится о реальном поиске, поскольку он закладывает его в поисковую систему.
  • Поиск по ключевому слову, который вы хотите, не получит те же результаты, что и NPM командной строки. Это действительно ограничено по охвату атрибутом ключевого слова, другие параметры поиска могут быть доступны через (см. Выше в search.js).
  • Запрос будет выглядеть действительно странно.

Попробуйте следующее: https://registry.npmjs.org/-/_view/byKeyword?startkey=["keyword"]&endkey=["keyword",{}]&group_level=3

Кроме того, одна короткая заметка, это вопрос, который, вероятно, получит ответ в чате node.js или списке рассылки примерно за 4 секунды:)

Надеюсь, что это поможет.

Ответ 2

Основываясь на этом ответе, я написал небольшую библиотеку для node, 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)
  })
})

Может быть полезно для вас

Ответ 3

Для тех, кто запрашивает это для реализации плагина, я сделал https://github.com/bevry/pluginclerk на основе вопрос о конечной точке реестра. Он будет обрабатывать такие вещи, как совместимость на основе ваших текущих зависимостей, а также реализует уровень кэширования.