File size: 684 Bytes
d605f27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

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;