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