0.1.8 • Published 6 years ago

requireg-ext v0.1.8

Weekly downloads
3
License
-
Repository
github
Last release
6 years ago

requireg-ext Build Status NPM version

Require and resolve global modules in node/io.js like a boss.

This fork upgrades NPM module dependencies, which showed security vulnerabilities.

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

  1. Resolve via native require()
  2. User home directory ($HOME or %USERPROFILE%)
  3. Node installation path
  4. $NODE_MODULES (can have different multiple paths, semicolon separated)
  5. Common operative system installation paths

Installation

$ npm install requireg-ext --save[-dev]

Usage

Load global modules

var requireg = require('requireg-ext')
// require a globally installed package
var npm = requireg('npm')

Resolve module path

var modulePath = requireg.resolve('npm')
// returns '/usr/local/lib/node_modules/npm/lib/npm.js'

Globalize it

require('requireg-ext').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