1.0.1 • Published 8 years ago
fs-node v1.0.1
FsNode
A class that represents a file system folder or file entry, it implements a caching system and accessors for lazy information lookup. The whole thing is iterable using ES2015 Symbol.iterator and Generators.
Usage
Initialisation
const FsNode = require('fs-node');
var dir = new FsNode('.');
var dir2 = new FsNode('.');
var file = new FsNode('file_name');
var file2 = new FsNode('file_name_full_path');
if (dir === dir2 && file === file2) {
console.log('true')
}
List files
var files = dir.paths; // [...]
var allFiles = dir.allPaths; // [...]
Iteration
// one level iteration
for(let entry of dir) {
// do stuff
}
// recursive iteration
for(let entry of dir.all) {
// do stuff
}
var file = new FsNode('some_file');
// files are not iterable ... right ?
for(let entry of file) {
// no doubt
}
Properties
var file = new FsNode('some_file');
console.log(file.cache);// instance of Map
console.log(file.filename);
console.log(file.relativePath); // to process.cwd()
console.log(file.relativeDirname); // to process.cwd()
console.log(file.realpath); //cached
console.log(file.path);
console.log(file.dirname);
console.log(file.basename); // without extension
console.log(file.extname); // '.*'
console.log(file.isDirectory); // cached
console.log(file.isSymlinkedDirectory); // cached
console.log(file.isFile); // cached
console.log(file.isSymlinkedFile);
console.log(file.isSymbolicLink);
console.log(file.stat); // cached
console.log(file.lstat); // cached
Cache
var file = new FsNode('some_file');
console.log(file.stat); // cached
console.log(file.lstat); // cached
console.log(file.invalidate('stat').stat); // invalidate and force lookup using fs.stat
console.log(file.stat); // cached again
console.log(file.invalidate()); // clear cache and
console.log(file.lstat); // now use fs.lstat
console.log(FsNode.cache); // all FsNode instances
console.log(FsNode.realpaths); // instance of Map - path => realpath
Performance
This module includes very basic benchmarks that produce good results especially when it's question of repeated operations
node tests/bench.js
Tests
npm test
Contributions
I am waiting for your pull requests
Licence
The MIT License (MIT)