获取所有包含关键字的 npm 包

Get all the npm packages containing a keyword

我想获取所有包含 foo 关键字的 npm 包。

使用 NPM api 怎么可能?我找不到与此相关的任何文档。 npm 库可以做到吗?

你可以使用npm package's search函数,像这样

var npm = require("npm");

npm.load({}, function () {

    npm.commands.search("foo", true, function (err, result) {

        if (err) {
            throw new Error(err);
        }
        console.log(Object.keys(result));

    });

});

它 returns 355 对象 foo 关键字。

我们传递给 search 函数的回调函数将接收一个对象,键是包名称,值是关于包的信息。引用文档,

Returns an object where each key is the name of a package, and the value is information about that package along with a 'words' property, which is a space-delimited string of all of the interesting words in that package. The only properties included are those that are searched, which generally include:

  • name
  • description
  • maintainers
  • url
  • keywords

注意:传递给search函数的第二个参数(true)是为了防止函数在stdout上打印结果。基本上它启用静音模式。

您还可以使用多个关键字来限制搜索,方法是将数组传递给 search 函数,如下所示

npm.commands.search(["foo", "bar"], true, function (err, result) {

returns只有39个对象。

我没有依赖巨大的 npm 模块,而是为此目的制作了一个小模块:npm-keyword.