1.3.0 • Published 8 years ago
ewalkdir v1.3.0
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})
dirand/ordirs:stringorarrayofstrings 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 aMapunderthis.foundItems.no:regex(default/^(node_modules|\..*)$/g); filter; returns true onno.testif not to be scanned.emitDefault:boolean(defaulttrue); sets default for all emitters.emit*:boolean(defaultemitDefault); see Events below.
Events/emittables
readyemitted before beginning directory walking and emitting of data.walkemitted 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.