deependency
Version:
Deependency is modular and extensible Inversion of Control container to easily introduce dependency injection in your NodeJS modules.
59 lines (32 loc) • 1.13 kB
JavaScript
;
const fs = require('fs');
const path = require('path');
module.exports = function ModuleEnumerator(rootPath, options) {
var recursive = options ? options.recursive : false;
var pattern = options ? options.pattern : null;
this.enumerate = function () {
var files = [];
var getFilesRecursively = function (folderPath) {
fs.readdirSync(folderPath).forEach(filename => {
var fullFilename = path.join(folderPath, filename);
var isDirectory = fs.statSync(fullFilename).isDirectory();
if (isDirectory) {
if (!recursive) return;
getFilesRecursively(fullFilename);
} else {
var moduleName = fullFilenameToModule(fullFilename);
if (pattern && !moduleName.match(pattern)) return;
files.push(moduleName);
}
});
};
getFilesRecursively(rootPath);
return files;
};
var fullFilenameToModule = function (fullFilename) {
return fullFilename
.split('\\')
.filter(x => !!x)
.join('/');
};
};