当前位置: 首页 > 面试题库 >

node.js全局模式,用于排除多个文件

漆雕令秋
2023-03-14
问题内容

我正在使用npm模块node-glob。

代码段递归返回当前工作目录中的所有文件。

var glob = require('glob');
glob('**/*', function(err, files) {
    console.log(files);
});

样本输出:

[ 'index.html', 'js', 'js/app.js', 'js/lib.js' ]

我想排除 的index.htmlJS / lib.js 。我试图排除带有负号 “!”的文件
但没有运气。是否只有通过使用模式才能实现这一目标?


问题答案:

或没有外部依赖项:

/**
    Walk directory,
    list tree without regex excludes
 */

var fs = require('fs');
var path = require('path');

var walk = function (dir, regExcludes, done) {
  var results = [];

  fs.readdir(dir, function (err, list) {
    if (err) return done(err);

    var pending = list.length;
    if (!pending) return done(null, results);

    list.forEach(function (file) {
      file = path.join(dir, file);

      var excluded = false;
      var len = regExcludes.length;
      var i = 0;

      for (; i < len; i++) {
        if (file.match(regExcludes[i])) {
          excluded = true;
        }
      }

      // Add if not in regExcludes
      if(excluded === false) {
        results.push(file);

        // Check if its a folder
        fs.stat(file, function (err, stat) {
          if (stat && stat.isDirectory()) {

            // If it is, walk again
            walk(file, regExcludes, function (err, res) {
              results = results.concat(res);

              if (!--pending) { done(null, results); }

            });
          } else {
            if (!--pending) { done(null, results); }
          }
        });
      } else {
        if (!--pending) { done(null, results); }
      }
    });
  });
};

var regExcludes = [/index\.html/, /js\/lib\.js/, /node_modules/];

walk('.', regExcludes, function(err, results) {
  if (err) {
    throw err;
  }
  console.log(results);
});


 类似资料:
  • 问题内容: 我有一个目录,里面有一堆文件:,…和。 我想排除所有以该功能开头的文件。 我该怎么做? 问题答案: glob的模式规则不是正则表达式。相反,它们遵循标准的Unix路径扩展规则。仅有几个特殊字符:[来自glob ]支持两个不同的通配符和字符范围。 因此,您可以排除某些带有模式的文件。 例如,要排除清单文件(以开头的文件)和glob,可以使用:

  • 问题内容: 我已经使用Python和Django建立了一个在线画廊。我刚刚开始添加编辑功能,从旋转开始。我使用sorl.thumbnail按需自动生成缩略图。 当我编辑原始文件时,我需要清理所有缩略图,以便生成新的缩略图。每个图片有三到四个(我在不同场合有不同的图片)。 我 可以 在文件变量中进行硬编码…但是这很混乱,如果我改变工作方式,则需要重新访问代码。 理想情况下,我想进行正则删除。用正则表

  • 我有一个现有的表,它有两个字段-主键和全局辅助索引: 既然attributeA作为全局辅助索引,我可以通过为全局辅助索引指定一个值来删除所有项吗?例如,我想删除所有属性为id1的记录-这在Dynamo中是可能的吗? Dynamo提供了关于删除索引本身的文档,但没有特别说明是否可以使用GSI删除多个项

  • 问题内容: 我有2个守护程序,它们应该访问相同的变量。我为全局变量创建了第3个文件,每个守护程序都可以访问该变量。但是,当一个更改变量时,另一个仍然看到默认值。 例: glob.py 守护程序a: 守护程序b: 每次我希望我将问题弄清楚时,它将打印0,并且有人可以帮助我。如果您需要更多信息,请随时询问。 问题答案: 看起来(尽管您没有明确告诉您)您正在以一种完全独立的方式运行程序:Python解释

  • 问题内容: 我在这里问: node.js是否需要继承? 有人告诉我可以通过省略var将变量设置为全局范围。 这对我不起作用。 即: 不能使_在必需文件上可用。我可以设置express ,但可以在其他地方使用。 有人可以确认这应该起作用吗?谢谢。 问题答案: 您可以这样使用:

  • 主要内容:全局对象与全局变量,__filename,__dirname,setTimeout(cb ms),clearTimeout(t),setInterval(cb ms),console,processJavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 globa