UNPKG

931 BJavaScriptView Raw
1var fs = require('fs');
2var join = require('path').join;
3var resolve = require('path').resolve;
4
5var requireDirectory = function(m, path, exclude){
6 var delegate = function(){ return true; };
7 if(exclude instanceof RegExp){
8 delegate = function(path){
9 if(exclude.test(path)){
10 return false;
11 }else{
12 return true;
13 }
14 };
15 }else if(exclude && {}.toString.call(exclude) === '[object Function]'){
16 delegate = exclude;
17 }
18
19 var retval = {};
20 path = resolve(path);
21 fs.readdirSync(path).forEach(function(filename){
22 var joined = join(path, filename);
23 if(delegate(joined)){
24 if(fs.statSync(joined).isDirectory()){
25 retval[filename] = requireDirectory(m, joined, delegate);
26 }else{
27 var name = filename.substring(0, filename.lastIndexOf('.'));
28 retval[name] = m.require(joined);
29 }
30 }
31 });
32 return retval;
33};
34
35module.exports = requireDirectory;