requireg
Require global modules in node.js like a boss
Differences with require()
requireg
tries to find modules in global locations which are
not natively supported by the node.js module resolve algorithm.
Supported locations:
- $HOME/node_modules (instead of $HOME/.node_modules)
- $HOME/node_libraries (instead of $HOME/.node_libraries)
- $HOME/node_packages (specific of
requireg
) - $PREFIX/lib/node_modules (instead of $PREFIX/lib/node)
- $NODE_MODULES (use the specific modules path environment variable)
Resolution priority
- Resolve via native
require()
- User home directory (
$HOME
or %USERPROFILE%
) - Node installation path
- $NODE_MODULES (can have different multiple paths, semicolon separated)
- Common operative system installation paths
Installation
$ npm install requireg --save[-dev]
Usage
Load global modules
var requireg = require('requireg')
var npm = requireg('npm')
Resolve module path
var modulePath = requireg.resolve('npm')
Globalize it
require('requireg').globalize()
Now it is globally available from any source file
var globalModule = requireg('npm')
Module not found
requireg
maintains the same behavior as the native require()
.
It will throw an Error
exception if the module was not found
Considerations
- Require global modules in node.js are considered anti-pattern.
Note that you can experiment unreliability or inconsistency across different environments.
I hope you know exactly what you do with
requireg
- Only node packages installed with NPM are supported (which means only standardized NPM paths are supported)
Wish list
- Custom environment variable with custom path to resolve global modules
- Possible configuration object (force to use only global modules...)
License
Released under MIT license