levo v1.0.0
node-levo
Levo lifts the experience of NodeJS programming by providing a set of essential enhancements.
npm install levo --saveModules
Levo is composed of different modules, each providing useful functions for a particular set of requirements:
fs
Functionality for file system related tasks.
var _fs = require('levo').fs;WalkStream
var walk = new _fs.WalkStream('/my/dir');The stream emits data events with Info objects, for each file/directory encountered.
Also, any errors encountered are emitted as walkError events.
walk.on('walkError',console.error);
// console: EACCESS: no permission, scandir: /my/dir/root
walk.on('data',console.log);
// console: {name:'test.png', file:'/my/dir/test/png', depth:0, stats:{...}}Behaviour can be configured by passing additional options parameter to constructor.
// Example: recurse to a maximum depth of 5, and do not recurse into symlink directories.
var noSymlinks = function(info){return ! info.isSymbolicLink();}
var options = {maxdepth:5, lstat:true, recurseFilter: noSymlinks};
var walk = new levo.fs.WalkStream('/my/dir',options);
walk.on('data',console.log); Options parameter may include the following settings if required:
1. maxDepth : number, limit recursion to this depth. 0 means no recursion.
2. lstat : if set to true, native lstat() is used instead of stat() to get file stats.
3. recurseFilter : function to filter directories to recurse. Called with directory Info,
must return true to allow recursion.
Info
Holds information about a file entry processed during a directory walk.
Properties:
- name - name of the file entry.
- file - path of file entry.
- depth - depth from root directory being walked. 0 being in root directory.
- stats - file entry stats.
util
Utility helpers.
var _util = require('levo').util;createRequire()
Returns a function that is similar to NodeJS require, in that it is used
to load modules. However the returned function also looks for modules in directories that are
passed to levo.require() as arguments.
var __require = _util.createRequire( __dirname, '/my/other/node/modules');
var user = __require('models/user');
var lib = __require('other-module')The __require can also be set to global scope:
// before all other code, add root directory for lookup
global.__require = levo.require( __dirname);for easy usage from anywhere in code:
// inside some other module
var app = __require("app");