require-indexify
v1.0.0
Published
automatically require modules in a directory
Downloads
11
Maintainers
Readme
Description
A tool to automatically require modules in a directory.
Installation
$ npm i require-indexify
Usage
Say we have a diretory structure in our node project:
- app
- controller
- controllerA.js
- controllerB.js
- midlleware
- middlewareA.js
- middlewareB.js
- util
- funcA.js
- funcB.js
- ...
- index.js
- index.js
- controller
In general, app/util/index.js
may be like this:
module.exports = {
funcA: require('./funcA.js'),
funcB: require('./funcB.js'),
// ... and other modules in app/util
}
And, we have to manually add require
when a new .js
file is added.
Now with require-inedxify
, app/util/index.js
is much simpler:
module.exports = require('require-indexify')();
More options
indexify(basePath)
module.exports = indexify('./utl');
// or
module.exports = indexify(__dirname);
basePath
can be either relative or absolute, default to '.'
.
indexify(config)
config.base
: equivalent to basePath above.
config.include
: an array explicitly specifying which module(s) to require. Default to none
, all modules included.
config.exclude
: an array explicitly specifying which module(s) not to require. Default to []
, none is excluded.
config.recursive
: whether to traverse the directory recursively requiring all valid modules. If a directory contains an index.js
, it will not be further traversed. Default to false
.
config.selfExclude
: whether to exclude the file that is calling indexify
. Default to true
. This option is usefull since, in generall, we only want the index.js
file to load its sibling modules.
config.merge
: whether to merge all modules(Object.assign
used). Default to false
. Useful to require *.config.js
and merge them into one.
example app/index.js
:
module.exports = indexify({
base: '.',
include: [
'./controller', // relative to base dir
'util'
],
exclude: [
'controller/controllerA.js' // extname needed to indicate a file rather than a directory
],
recursive: true
});