diff --git a/lib/filewalker.js b/lib/filewalker.js index 0a21c89..d1bb5b9 100644 --- a/lib/filewalker.js +++ b/lib/filewalker.js @@ -4,7 +4,8 @@ var fs = require('fs'), path = require('path'), util = require('util'), FunctionQueue = require('fqueue'), - immediately = process.nextTick; + immediately = process.nextTick, + contains = require('contains-path'); if (global.setImmediate !== undefined) { immediately = global.setImmediate; @@ -25,9 +26,7 @@ function Filewalker(root, options) { options = options || {}; Object.keys(options).forEach(function(k) { - if(self.hasOwnProperty(k)) { - self[k] = options[k]; - } + self[k] = options[k]; }); this.root = path.resolve(root||'.'); @@ -124,6 +123,10 @@ Filewalker.prototype._stat = function(p) { } else { self.total += 1; if(s.isDirectory()) { + if (self.ignoredFolders) && self.ignoredFolders.some(function(f) { return contains(p, f); })) { + self.done(); + return; + } self.enqueue(self._emitDir, [self._path(p), s, p]); } else { if(!self.matchRegExp || self.matchRegExp.test(p)) { diff --git a/package.json b/package.json index 95d9886..357389c 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "node": ">= 0.4.x" }, "dependencies": { + "contains-path": "^0.1.0", "fqueue": "0.0.x" }, "scripts": {