我正在使用npm模块node-glob。
该代码段递归返回当前工作目录中的所有文件。
var glob = require('glob'); glob('**/*', function(err, files) { console.log(files); });
样本输出:
[ 'index.html', 'js', 'js/app.js', 'js/lib.js' ]
我想排除 的index.html 和 JS / 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); });