lotus / backend /walkDir.ts
k-l-lambda's picture
commit lotus dist.
d605f27
raw
history blame contribute delete
684 Bytes
import fs from "fs";
import path from "path";
const walkDir = (dir, pattern, {recursive = false} = {}) => {
const list = fs.readdirSync(dir);
//console.log("files:", files);
const subdirs = [];
const files = list.map(filename => {
const file = path.resolve(dir, filename);
const stat = fs.statSync(file);
if (stat.isDirectory())
subdirs.push(file);
return {file, filename, stat};
}).filter(({filename, stat}) => !stat.isDirectory() && (!pattern || pattern.test(filename)))
.map(({file}) => file);
if (recursive) {
subdirs.forEach(subdir => {
files.push(...walkDir(subdir, pattern, {recursive}));
});
}
return files;
};
export default walkDir;