dynamic-file-loader
v1.1.2
Published
Require or import files of directory dynamically
Downloads
68
Maintainers
Readme
Dynamic File Loader (DFL)
Require or import files of directory dynamically and reduce your code lines and code complexity.
Installation
This is a Node.js module available through the npm registry.
Before installing, download and install Node.js. Node.js 4.x or higher is required.
Installation is done using the npm install command:
$ npm install dynamic-file-loader
Features
- Dynamically load all files in a directory
- Dynamically load all files in a directory incluie it's sub directoris
- Filter files to load using exclusion array or regular expression
- Use builder or option argument style
- Support promise or async/await
Examples
All examples are made assuming a directory named files with multiples files inside. So:
files/
|-- dir1/
| `-- file7.js
|-- dir2/
| |-- file8.js
| `-- file9.js
|-- file1.js
|-- file2.js
|-- file3.js
|-- file4.js
|-- file5.js
`-- file6.js
Using promise to load all files on directory
new DynamicFileLoader.Builder()
.onDirectory(__dirname, '/files')
.build()
.load()
.then(result => console.log(result.loadedFiles))
.catch(error => console.error(error));
Using promise to load files with RegExp
new DynamicFileLoader.Builder()
.onDirectory(__dirname, '/files')
.withFilter(/file([1-3]).js/)
.build()
.load()
.then(result => console.log(result.loadedFiles))
.catch(error => console.error(error));
Using async/await to load files with array exclusion and custom requirer function
async function test() {
try {
let merged = {};
const result = await new DynamicFileLoader.Builder()
.onDirectory(__dirname, '/files')
.withFilter(['file1.js', 'file3.js'])
.withRequirer((absolutePath, dirPath, fileName) => {
merged = { ...merged, ...require(absolutePath)() }
})
.build()
.load();
console.log(result.loadedFiles);
} catch(error) {
console.error(error);
}
}
Using async/await and options argument
async function test() {
try {
let merged = {};
const options = {
//absolute path directory where be files
basePath: __dirname,
dirPath: '/files',
//list of files names to exclude or regular expression
ommit: /file([4-6]).js/,
//callback function to custom require (optional)
fnRequire: filePath => merged = { ...merged, ...require(filePath)() }
};
const result = await new DynamicFileLoader().load(options);
console.log(result.loadedFiles);
} catch(error) {
console.error(error);
}
}