load-directory
v3.0.1
Published
Recursively load the entire directory with strategies for customized object structure
Downloads
93
Maintainers
Readme
load-directory
npm install --save load-directory
API
const Require = require('load-directory');
Require.all(<path-to-directory>, <options>);
Default configuration, can be overwritten with user-defined options:
{
filter: /^((?!index).+)*\..*$/, // index.js will be ignored by default
excludeDirs: /^\.(git|svn)$/, // .git, .svn directories will be ignored by default
recursive: true, // true, if files are to be required by traversing nested directories
map: module.exports.Strategies.Filename.pascalCase, // pascalCase will be applied by default
resolve: function (func) { // resolving of files will be simply return module.exports by default
return func;
}
};
Usage
const Require = require('load-directory');
Require.all(__dirname, {
excludeDirs : /^primitive$/, // will exclude the directory "primitive"
map: Require.Strategies.Filename.pascalCase // will use Pascal Case to map the required filenames
});
A few strategies are provided on requiring files and setting filenames on require eg. Given the file structure:
.
└── utils
├── generate_filename.js
└── predict_value.js
└── templates
└── standard.js
└── ultimate.js
Examples using strategies
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.lowerCase
});
console.log(Utils);
// { generate_filename: [Function],
// predict_value: [Function],
// templates: { standard: [Function], ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.upperCase
});
console.log(Utils);
// { GENERATE_FILENAME: [Function],
// PREDICT_VALUE: [Function],
// TEMPLATES: { STANDARD: [Function], ULTIMATE: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.dotCase
});
console.log(Utils);
// { 'generate.filename': [Function],
// 'predict.value': [Function],
// templates: { standard: [Function], ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.headerCase
});
console.log(Utils);
// { 'Generate-Filename': [Function],
// 'Predict-Value': [Function],
// Templates: { Standard: [Function], Ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.paramCase
});
console.log(Utils);
// { 'generate-filename': [Function],
// 'predict-value': [Function],
// templates: { standard: [Function], ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.sentenceCase
});
console.log(Utils);
// { 'Generate filename': [Function],
// 'Predict value': [Function],
// Templates: { Standard: [Function], Ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.snakeCase
});
console.log(Utils);
// { generate_filename: [Function],
// predict_value: [Function],
// templates: { standard: [Function], ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.camelCase
});
console.log(Utils);
// { generateFilename: [Function],
// predictValue: [Function],
// templates: { standard: [Function], ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.pascalCase
});
console.log(Utils);
// { GenerateFilename: [Function],
// PredictValue: [Function],
// Templates: { Standard: [Function], Ultimate: [Function] } }
const Utils = Require.all(__dirname + 'utils', {
map: Require.Strategies.Filename.functionCase
});
console.log(Utils);
// { generateFilename: [Function],
// predictValue: [Function],
// Templates: { standard: [Function], ultimate: [Function] } }
For more workable examples, please see fixtures.