superimport v1.4.1
superimport
Tries to import a node module from the parent module dir or current working dir.
This was build for the logtopus logger.
We need a way to load optional modules from the $PROJECT_DIR/node_modules/ dir which is using logtopus, to load optional dependencies.
For example:
The logtopus module should load logtopus-redis-logger, but not from its own node_modules directory.
It should be load from $PROJECT_DIR/node_modules folder. This gives developers the
opportunity to load optional dependencies from the $PROJECT folder.
The logtopus module loads an optional module with superimport
// logtopus/index.js
const superimport = require('superimport');
const redisLogger = superimport('logtopus-redis-logger');A third part module uses logtopus and contains the optional module as a dependency
// mymodule/example.js
const logtopus = require('logtopus');In this example tries logtopus to require logtopus-redis-logger in this order:
1) mymodule/node_modules/logtopus-redis-logger
2) <cwd>/node_modules/logtopus-redis-logger
3) ../node_modules/logtopus-redis-logger (goes up until /node_modules)
4) return null
And optional second argument overrides the directories which may contain an optional module
const dirs = ['../foo/node_modules', '../bar/libs/'];
const mod = superimport('somemodule', dirs);Methods
superimport(str moduleName , arr importDirs)
See description above
superimport.importAll(arr dir , obj options)
Imports all .js or .node files from dir. The second options argument is optional and changes the behaviour. Prior version 1.3.0, the second argument was a boolean and enabled recursive search. This is deprecated now.
Options:
| Name | Default | Description |
|---|---|---|
recursive | false | Includes all subdirectories |
silent | false | Ignore errors |
importTypes | false | Set file extensions to be imported. Uses require.extensions to determine the types by default |
Returns an array of all required modules