UNPKG

ae-biu

Version:

Born For AE, Born To Do

54 lines (48 loc) 1.3 kB
// @flow import fs from 'fs' import path from 'path' import { promisify } from 'util' import minimatch from 'minimatch' export const readDirRecursive = async (dir: string, ext: ?string): Promise<Array<string>> => { let files = [] const list = await promisify(fs.readdir)(dir) await Promise.all(list.map(async (file) => { file = path.resolve(dir, file) const stat = await promisify(fs.stat)(file) if (stat && stat.isDirectory()) { const temp = await readDirRecursive(file, ext) files = files.concat(temp) } else { if (ext) { if (minimatch(file, ext, {})) { files.push(file) } } else { files.push(file) } } })) return files } export const readDirRecursiveSync = (dir: string, ext: ?string): Array<string> => { let files = [] const list = fs.readdirSync(dir) list.map(file => { file = path.resolve(dir, file) const stat = fs.statSync(file) if (stat && stat.isDirectory()) { const temp = readDirRecursiveSync(file, ext) files = [...files, ...temp] } else { if (ext) { if (minimatch(file, ext, {matchBase: true})) { files.push(file) } } else { files.push(file) } } }) return files } export default readDirRecursive