【发布时间】:2014-04-21 18:59:41
【问题描述】:
使用node-glob,是否可以指定只返回前X 个匹配文件而不是所有匹配的模式?
例如,如果我想要所有 JavaScript 文件,我的模式将是 **/*.js。但是如果我只想要前 5 个 JavaScript 文件呢?
我意识到还有其他选择,例如我可以获取生成的文件集数组并将其切片。这里的基本情况使这变得困难,所以我试图直接从 glob 模式中完成。
【问题讨论】:
使用node-glob,是否可以指定只返回前X 个匹配文件而不是所有匹配的模式?
例如,如果我想要所有 JavaScript 文件,我的模式将是 **/*.js。但是如果我只想要前 5 个 JavaScript 文件呢?
我意识到还有其他选择,例如我可以获取生成的文件集数组并将其切片。这里的基本情况使这变得困难,所以我试图直接从 glob 模式中完成。
【问题讨论】:
您可以像这样创建自己的 Glob 对象:
var i = 0;
var Glob = require("glob").Glob;
var mg = new Glob(pattern, options, cb);
mg.on("match", function(matched) {
console.log(matched);
i++;
if(i == 5) mg.abort();
});
它是一个事件发射器,因此您可以侦听match 事件,该事件将在找到文件时触发。随着每次匹配增加计数器,如果达到您的阈值,您可以调用mg.abort() 停止搜索。
【讨论】: