Skip to content

A NodeJS library to require all files in a folder (and its subfolders) in object or array format

License

Notifications You must be signed in to change notification settings

exoRift/mass-require

Repository files navigation

Mass Require

Quality Assurance Test Coverage Maintainability

Version NPM Downloads

NPM Page Gitter

Usage

Mass require is a package meant for modular packages. It's able to require iterative content in a fast and simple format with configurable settings

Examples for usage

  • Commands for a Discord bot

    If your bot's commands are in separate files in a folder, you would be able to require them all using mass require

  • JSON data storage

    If using JSON to store data for separate entities in different files, you would be able to require it all in a format that would be easy to handle and manipulate

Best Practice

The best practice for using mass require would be to have an index.js file in a folder with code along the lines of

const {
  toObject
} = require('mass-require')

module.exports = toObject(__dirname, {
  exclude: /^index\.js$/ // Don't require the file that is mass requiring or else your code will break
})

Formats

When importing the library into your code, you will be presented with an object containing two functions.

toArray

This will require all the specified files and insert their values into an array. If recursion is enabled, all values from a subfolder will be put in an array entry (that is inside the root array). Meaning, your array would look like this:

['foo', ['bar', 'baz']]

toObject

This will require all the specified files and insert their values into an object where the key pertains to the name of the file. The files of a subfolder will be under a property named after the subfolder's name. (If removeExtension is true, it will be the name of the file without its extension)

Options

Configure import properties by specifying an object as the second parameter for both functions (The first being the directory)

Name Type Description Default
recursive Boolean Whether subfolder files should be required false
flatten Boolean If recursive, whether subfolder files should be placed in the root structure rather than a nested one false
removeExtension (toObject only) Boolean Whether file extensions should be removed from the property name true
exclude RegExp A Regex pattern to exclude files from being required