require-all

An easy way to require all files within a directory.

require-all

An easy way to require all files within a directory.

var controllers = require('require-all')({
  dirname     :  __dirname + '/controllers',
  filter      :  /(.+Controller)\.js$/,
  excludeDirs :  /^\.(git|svn)$/
});
 
// controllers now is an object with references to all modules matching the filter 
// for example: 
// { HomeController: function HomeController() {...}, ...} 

If your objective is to simply require all .js and .json files in a directory you can just pass a string to require-all:

var libs = require('require-all')(__dirname + '/lib');

If your directory contains files that all export constructors, you can require them all and automatically construct the objects using resolve:

var controllers = require('require-all')({
  dirname     :  __dirname + '/controllers',
  filter      :  /(.+Controller)\.js$/,
  excludeDirs :  /^\.(git|svn)$/,
  resolve     : function (Controller) {
    return new Controller();
  }
});

If your directory contains files where the names do not match what you want in the resulting property (for example, you want camelCase but the file names are snake_case), then you can use the map function:

var controllers = require('require-all')({
  dirname     :  __dirname + '/controllers',
  filter      :  /(.+Controller)\.js$/,
  excludeDirs :  /^\.(git|svn)$/,
  map         : function (namepath) {
    return name.replace(/_([a-z])/g, function (mc) {
      return c.toUpperCase();
    });
  }
});