ewalkdir
v1.3.0
Published
Event-emitting asyncronous directory walker.
Downloads
6
Maintainers
Readme
ewalkdir
Node.js event-emitting asynchronous directory walking.
Usage
All the files under your homedir:
const ewalkdir = require('ewalkdir');
const dir = require('os').homedir();
const walker = ewalkdir(dir)
.on('file', ({dir,/* path,*/ stats, relTop}) => {
console.log('dir', dir, stats);
})
.on('symboliclink', ({dir,/* path,*/ stats, relTop}) => {
console.log('symboliclink', dir, stats)
})
Options
Can be set by ewalkdir({key: value})
dir
and/ordirs
:string
orarray
ofstring
s pointing to directories to scan.depth
:number
(defaultInfinity
); defines what depth to explore to.relTop
:string
(default"/"
); relative path to top scan, included in all events exceptready
.readlinks
/followLinks
/followSymlinks
:boolean
(defaultfalse
); follow symbolic links. Subitems will emit as if it were a directory, with the exception of the{dir, path = dir}
attributes which will be completely different; but will follow the same{relTop}
attribute.keepFound
:boolean
(defaultfalse
); keeps data in aMap
underthis.foundItems
.no
:regex
(default/^(node_modules|\..*)$/g
); filter; returns true onno.test
if not to be scanned.emitDefault
:boolean
(defaulttrue
); sets default for all emitters.emit*
:boolean
(defaultemitDefault
); see Events below.
Events/emittables
ready
emitted before beginning directory walking and emitting of data.walk
emitted every walked item.file
(iffs.Stats.isFile()
, controlled by optionemitFiles
)dir
(iffs.Stats.isDirectory()
, controlled by optionemitDirectorys
)blockdevice
(iffs.Stats.isBlockDevice()
, controlled by optionemitBlockDevices
)characterdevice
(iffs.Stats.isCharacterDevice()
, controlled by optionemitCharacterDevices
)symboliclink
(iffs.Stats.isSymbolicLink()
, controlled by optionemitSymbolicLinks
)fifo
(iffs.Stats.isFIFO()
, controlled by optionemitFIFOs
, First In First Out/"Queue")socket
(iffs.Stats.isSocket()
, controlled by optionemitSockets
)
Event structure
All events, excluding ready
and walk
, attach a {dir, path = dir, stats, relTop}
event, documenting the {dir, path}
to the item, {stats}
is an fs.Stats
object and relTop
is a HTTP relative path if a server was based on it.
Event ready
emits no data.
Event walk
emits {dir, path = dir, depth, relTop}
regardless.
Usecases
Current usecases involve:
- Finding and/or hashing a large amount of files in several seconds.
- Mapping a directory into many stat instances.