41 lines
896 B
JavaScript
41 lines
896 B
JavaScript
var fs = require('fs');
|
|
|
|
module.exports = function requireAll(options) {
|
|
if (typeof options === 'string') {
|
|
options = {
|
|
dirname: options,
|
|
filter: /(.+)\.js(on)?$/,
|
|
excludeDirs: /^\.(git|svn)$/
|
|
};
|
|
}
|
|
|
|
var files = fs.readdirSync(options.dirname);
|
|
var modules = {};
|
|
|
|
function excludeDirectory(dirname) {
|
|
return options.excludeDirs && dirname.match(options.excludeDirs);
|
|
}
|
|
|
|
files.forEach(function (file) {
|
|
var filepath = options.dirname + '/' + file;
|
|
if (fs.statSync(filepath).isDirectory()) {
|
|
|
|
if (excludeDirectory(file)) return;
|
|
|
|
modules[file] = requireAll({
|
|
dirname: filepath,
|
|
filter: options.filter,
|
|
excludeDirs: options.excludeDirs
|
|
});
|
|
|
|
} else {
|
|
var match = file.match(options.filter);
|
|
if (!match) return;
|
|
|
|
modules[match[1]] = require(filepath);
|
|
}
|
|
});
|
|
|
|
return modules;
|
|
};
|