1 | const fs = require('fs');
|
2 | const path = require('path');
|
3 |
|
4 | const walk = (dir, includes = []) => {
|
5 | let results = [];
|
6 | const rootDir = path.resolve(dir);
|
7 | const files = fs.readdirSync(rootDir);
|
8 | files.forEach(list => {
|
9 | list = path.join(rootDir, list)
|
10 | const stat = fs.statSync(list);
|
11 | if (stat.isDirectory()) {
|
12 | results = results.concat(walk(list, includes));
|
13 | }
|
14 | if (stat.isFile()) {
|
15 | if (includes.length <= 0) {
|
16 | results.push(list);
|
17 | } else if (includes.includes(path.extname(list))) {
|
18 | results.push(list);
|
19 | }
|
20 | }
|
21 | });
|
22 | return results;
|
23 | };
|
24 |
|
25 | exports.globSync = (dir, includes = []) => {
|
26 | if (!(fs.existsSync(path.resolve(dir)))) return [];
|
27 | return walk(dir, includes);
|
28 | };
|
29 | exports.globAsync = (dir, includes = []) => {
|
30 | return Promise.resolve(walk(dir, includes));
|
31 | }; |
\ | No newline at end of file |