Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/suddi/load-directory
NPM module to require all JavaScript and JSON modules with require strategies to customize object structures (https://www.npmjs.com/package/load-directory)
https://github.com/suddi/load-directory
directories nodejs require-all strategies
Last synced: 15 days ago
JSON representation
NPM module to require all JavaScript and JSON modules with require strategies to customize object structures (https://www.npmjs.com/package/load-directory)
- Host: GitHub
- URL: https://github.com/suddi/load-directory
- Owner: suddi
- License: mit
- Created: 2016-09-04T05:51:26.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-06-05T19:10:37.000Z (over 1 year ago)
- Last Synced: 2024-10-16T02:33:10.905Z (28 days ago)
- Topics: directories, nodejs, require-all, strategies
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/load-directory
- Size: 260 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# load-directory
[![CircleCI](https://circleci.com/gh/suddi/load-directory.svg?style=svg)](https://circleci.com/gh/suddi/load-directory)
[![codecov](https://codecov.io/gh/suddi/load-directory/branch/master/graph/badge.svg)](https://codecov.io/gh/suddi/load-directory)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/46408c666119432abee43f991b79cc68)](https://www.codacy.com/app/Suddi/load-directory)
[![npm](https://img.shields.io/npm/v/load-directory.svg)](https://www.npmjs.com/package/load-directory)
[![npm](https://img.shields.io/npm/dt/load-directory.svg)](https://www.npmjs.com/package/eslint-config-suddi)
[![David](https://img.shields.io/david/suddi/load-directory.svg)](https://david-dm.org/suddi/load-directory)
[![David](https://img.shields.io/david/dev/suddi/load-directory.svg)](https://david-dm.org/suddi/load-directory?type=dev)
[![license](https://img.shields.io/github/license/suddi/load-directory.svg)](https://raw.githubusercontent.com/suddi/load-directory/master/LICENSE)[![codecov](https://codecov.io/gh/suddi/load-directory/branch/master/graphs/commits.svg)](https://codecov.io/gh/suddi/load-directory)
````
npm install --save load-directory
````## API
````js
const Require = require('load-directory');Require.all(, );
````Default configuration, can be overwritten with user-defined options:
````js
{
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
````js
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
````js
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](test/integration/fixtures).