我正在使用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);
});

Node.js相关问答推荐

Spotify Auth访问令牌给出错误代码400

Mongoose:如何在文档中推送到Caped(有限大小,滚动窗口)数组?

Sequelize-测试使用虚拟场更新模型

如果我加入另一个公会且我的​​机器人已在其中,欢迎消息发送错误

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

如何在docker容器上正确安装nodejs?

try 使用 pdf.js 时 pdf.getPage 不是函数

在 Docker 容器内创建一个 cron 作业(job)来执行 run.js 文件中的函数

为什么我的 Node.js 应用程序在登录时无法正确验证密码(使用 Passport-local 和 bcryptjs)?

在 Nest 项目上运行 Jest 测试时,我的文件无法找到一个在测试之外没有任何问题的模块

使用pm2启动服务器

我如何在 Raku 的供应中注册不同的事件?

看起来这段代码try GET 请求发送的值变为空白

firebase/messaging 不提供名为 getToken 的导出

将已保存的卡片从条带显示到前端

无法更新MongoDB中的文档:";伯森场';writeConcern.w';是错误的类型';数组'&引用;

适用于 Windows 7 的 NodeJS

node.js 是否支持yields ?

向 Stripe 提交付款请求时出现没有此类令牌错误

在单独的模块中定义 Mongoose 模型