Skip to content

NPM module to require all JavaScript and JSON modules with require strategies to customize object structures (https://www.npmjs.com/package/load-directory)

License

Notifications You must be signed in to change notification settings

suddi/load-directory

Repository files navigation

load-directory

CircleCI codecov Codacy Badge npm npm David David license

codecov

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.

About

NPM module to require all JavaScript and JSON modules with require strategies to customize object structures (https://www.npmjs.com/package/load-directory)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published