UNPKG

recursive-readdir-synchronous

Version:

Get an array of all files in a directory and subdirectories synchronously. This is a fork of https://github.com/jergason/recursive-readdir.

50 lines (39 loc) 1.17 kB
var fs = require('fs') var p = require('path') var minimatch = require('minimatch') function patternMatcher(pattern) { return function(path, stats) { var minimatcher = new minimatch.Minimatch(pattern, {matchBase: true}) return (!minimatcher.negate || stats.isFile()) && minimatcher.match(path) } } function toMatcherFunction(ignoreEntry) { if (typeof ignoreEntry == 'function') { return ignoreEntry } else { return patternMatcher(ignoreEntry) } } function readdir(path, ignores) { ignores = ignores || []; ignores = ignores.map(toMatcherFunction); var list = []; var files = fs.readdirSync(path); if (!files.length) { return list; } files.forEach(function (file) { var filePath = p.join(path, file) var stats = fs.statSync(filePath); if (ignores.some(function (matcher) { return matcher(filePath, stats) })) { return; } if (stats.isDirectory()) { list = list.concat(readdir(filePath, ignores)); } else { list.push(filePath) } }) return list; } module.exports = readdir