@universal-packages/module-loader
TypeScript icon, indicating that this package has built-in type declarations

1.0.8 • Public • Published

Module Loader

npm version Testing codecov

Imports deeply all modules in a directory as a list to use later, this is useful when you are expecting a arbitrary amount of modules that behaves the same and can be used without the need of importing them manually or even importing them manually will be a hazel, it can also be useful to activate modules (probably with decorators) that need to be activated before being imported manually later.

Install

npm install @universal-packages/module-loader

Global methods

loadModules(location: string, [options])

Load recursively a directory until it finds a package, index file or just a file in that order, If it finds a package.json it will just import the main file in the package, If it find and index file it will just import that index file, If any of above it will just import files deep in the hierarchy.

import { loadModules } from '@universal-packages/module-loader'

async function test() {
  const modules = await loadModules('./modules')

  console.log(modules)
}

test()

// > [
// >   { location: './modules/module.js' exports: { load: Function, unload: Function }, type: 'file' }
// >   { location: './modules/utils.js' exports: { pad: Function }, type: 'file' }
// >   ...
// > ]

Options

  • onlyDefault boolean When loading the module directly only set exports as the exports.default, useful if you are importing classes or components that predominate in the module.

  • conventionPrefix string Only load modules that follow the convention <module>.<conventionPrefix>.js, exp: User.model.js.

    import { loadModules } from '@universal-packages/module-loader'
    
    async function test() {
      const modules = await loadModules('./modules', { conventionPrefix:  })
    
      console.log(modules)
    }
    
    test()
    
    // > [
    // >   { location: './models/Post.model.js' exports: [class Post], type: 'file' }
    // >   { location: './models/User.model.js' exports: [class User], type: 'file' }
    // >   ...
    // > ]

Typescript

This library is developed in TypeScript and shipped fully typed.

Contributing

The development of this library happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving this library.

License

MIT licensed.

Readme

Keywords

none

Package Sidebar

Install

npm i @universal-packages/module-loader

Weekly Downloads

12,905

Version

1.0.8

License

MIT

Unpacked Size

15.1 kB

Total Files

12

Last publish

Collaborators

  • omarandstuff