documentation - install - why
Say we have the following tree
./folder
├── a.js
├── a.json
├── module
│ └── index.js
└── module.js
and each module exports its basename, i.e.
// ./folder/a.js
module.exports = 'a';then
var requireDir = require('require.dir');
requireDir('./folder') // =>
{
a: 'a',
ajson: {
a: 'a'
},
module: 'module',
modulejs: 'module'
}Require directories that may or may not have modules inside.
The basename of each file/module is used for the exported object. When in the given directory, if so happens, are files that have the same basename the extension is used for that key of the exported object.
Recurse folders if passed as an option.
The caller's path is always excluded.
Note that modules are not recursed.
Only folders that either do not have a package.json or an index file
The module.exports a function
function requireDir([string dirname, object options])arguments
-
dirname, type string optional, directory to inspect and require -
options, type object optional, properties are:dotwhether to includepathnamesstarting with a.dottest, type regexp, test eachpathnamefound, that is not.dotrecursive, whether continue recursively on next folders
defaults
dirnameto the caller's directory
when
options.dotisfalsydotfiles/folders are excludedoptions.testisfalsethatpathnameis skipped
require('./folder', {test: /\.js$/}) // js files
throws
- When the first
dirnamedoes not exists
returns
- object with all the exports
I've used require-dir but wanted to have it also return modules by default without recursing.
With npm
npm install --save require.dir
npm test
require.dir
basic
✓ should return folder exports
camelCase
✓ should camelCase folder exports
recursive
✓ should recurse folder exports given {recursive: true}
sameBasename
✓ should add lowerCase extension if basename existed
4 passing (23ms)