rrdir
Recursive directory reader with a delightful API
rrdir
recursively reads a directory and returns entries within via an async iterator or async/sync as Array. It has zero dependencies and can typically iterate millions of files in a matter of seconds. Memory usage is O(1)
for the async iterator and O(n)
for the Array variants.
Usage
npm i rrdir
import {rrdir, rrdirAsync, rrdirSync} from "rrdir";
for await (const entry of rrdir("dir")) {
}
const entries = await rrdirAsync("dir");
const entries = rrdirSync("dir");
API
rrdir(dir, [options])
rrdirAsync(dir, [options])
rrdirSync(dir, [options])
rrdir
is an async iterator which yields entry
. rrdirAsync
and rrdirSync
return an Array of entry
.
dir
String | Buffer
The directory to read, either absolute or relative. Pass a Buffer
to switch the module into Buffer
mode which is required to be able to read every file, like for example files with names that are invalid UTF-8 sequences.
options
Object
stats
boolean: Whether to include entry.stats
. Will reduce performance. Default: false
.followSymlinks
boolean: Whether to follow symlinks for both recursion and stat
calls. Default: false
.exclude
Array: Path globs to exclude, e.g. ["**/*.js"]
. Default: undefined
.include
Array: Path globs to include, e.g. ["**/*.map"]
. Default: undefined
.strict
boolean: Whether to throw immediately when reading an entry fails. Default: false
.insensitive
boolean: Whether include
and exclude
match case-insensitively. Default: false
.
entry
Object
path
string | Buffer: The path to the entry, will be relative if dir
is given relative. If dir
is a Buffer
, this will be too. Always present.directory
boolean: Boolean indicating whether the entry is a directory. undefined
on error.symlink
boolean: Boolean indicating whether the entry is a symbolic link. undefined
on error.stats
Object: A fs.stats
object, present when options.stats
is set. undefined
on error.err
Error: Any error encountered while reading this entry. undefined
on success.
© silverwind, distributed under BSD licence