UNPKG

load-directory

Version:

Recursively load the entire directory with strategies for customized object structure

148 lines (123 loc) 5.25 kB
# 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(<path-to-directory>, <options>); ```` 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).