Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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)

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).