1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- var FS = require('fs');
- var Path = require('path');
- module.exports = function (dir, basenames) {
- var requires = {};
- if (arguments.length === 2) {
- // if basenames argument is passed, explicitly include those files
- basenames.forEach(function (basename) {
- var filepath = Path.resolve(Path.join(dir, basename));
- requires[basename] = require(filepath);
- });
- } else if (arguments.length === 1) {
- // if basenames arguments isn't passed, require all javascript
- // files (except for those prefixed with _) and all directories
- var files = FS.readdirSync(dir);
- // sort files in lowercase alpha for linux
- files.sort(function (a,b) {
- a = a.toLowerCase();
- b = b.toLowerCase();
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
- });
- files.forEach(function (filename) {
- // ignore index.js and files prefixed with underscore and
- if ((filename === 'index.js') || (filename[0] === '_') || (filename[0] === '.')) {
- return;
- }
-
- var filepath = Path.resolve(Path.join(dir, filename));
- var ext = Path.extname(filename);
- var stats = FS.statSync(filepath);
-
- // don't require non-javascript files (.txt .md etc.)
- if (stats.isFile() && !(ext in require.extensions)) {
- return;
- }
- var basename = Path.basename(filename, ext);
- requires[basename] = require(filepath);
- });
- } else {
- throw new Error("Must pass directory as first argument");
- }
- return requires;
- };
|