37 lines
774 B
TypeScript
37 lines
774 B
TypeScript
|
import * as fs from "fs";
|
||
|
import * as path from "path";
|
||
|
|
||
|
/** List all files in a given directory return paths relative to the dir_path */
|
||
|
export const crawl = (() => {
|
||
|
|
||
|
const crawlRec = (dir_path: string, paths: string[]) => {
|
||
|
|
||
|
for (const file_name of fs.readdirSync(dir_path)) {
|
||
|
|
||
|
const file_path = path.join(dir_path, file_name);
|
||
|
|
||
|
if (fs.lstatSync(file_path).isDirectory()) {
|
||
|
|
||
|
crawlRec(file_path, paths);
|
||
|
|
||
|
continue;
|
||
|
|
||
|
}
|
||
|
|
||
|
paths.push(file_path);
|
||
|
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
return function crawl(dir_path: string): string[] {
|
||
|
|
||
|
const paths: string[] = [];
|
||
|
|
||
|
crawlRec(dir_path, paths);
|
||
|
|
||
|
return paths.map(file_path => path.relative(dir_path, file_path));
|
||
|
|
||
|
}
|
||
|
|
||
|
})();
|