1.0.11 • Published 6 years ago
autoloader.js v1.0.11
autoloader.js
This package is used to load directories and files in objects.
autoloader(dir, configs)
configs
- rootParent: Set's the object where files will be loaded over using their name as key and they
module.exports
as value. - deep: Set's how many levels below the loader will go to load files.
- only: (explained below in conditions)
- without: (explained below in conditions)
- withoutExtension: Set this to true to set conditions without file extensions.
- indexNames: Autoloader by default loads all files on a directory into an object which is received from an index file's
module.exports
. If there is no index file then it uses an empty object{}
. By default it has build inindex.js
andindex.json
as index names. - formatName: Used to set a function that will format file names Ex:
(name) => name.replace('Controller', '')
- formatNames: Same as formatName but it sets an object with dir name of dir full path as key and formatName-Function as value. This means that the format will only be applied on matched dirnames or dir full paths.
- rootParent: Set's the object where files will be loaded over using their name as key and they
- conditions: Is an array with values and functions used to check fulfillment. Here is an example to check if some specific name is fulfilled:
[['index.js', 'test.js'], (name) => name.includes('.json'), 'hello.js']
in this case fulfillments are onlyindex.js
,test.js
,*.json
,hello.js
, this conditional logic can be used inonly
andwithout
configs to load all files without some or only some files.
Example
// configs folder with 3 files
// + configs
// |-- index.js
// |-- conf1.js
// |-- conf2.js
// conf1.js
module.exports = {
a: 123,
};
// conf1.js
module.exports = {
b: 345,
};
// conf2.js
module.exports = {
c: 678,
};
// main.js
const autoloader = require('autoloader.js');
const path = require('path');
async function main() {
// Example 1
const configs = await autoloader(path.join(__dirname, 'configs'));
// configs = { a: 123, conf1: { b: 456 }, conf2: { c: 678 } }
// Example 2
const configs = await autoloader(path.join(__dirname, 'configs'), { rootParent: {} });
// configs = { conf1: { b: 456 }, conf2: { c: 678 } }
// Example 3
const configs = await autoloader(path.join(__dirname, 'configs'), { without: ['conf1.js'] });
// configs = { a: 123, conf2: { c: 678 } }
}
main().catch(console.log);