Intelligent multi-version dependency management for npm packages.
npm install --save requirey
const ry = require('requirey')(config, options);
config
- object of module names mapped to arrays of supported versions
options
- extra options to override default behaviors like strict
Default behavior is strict mode enabled which will always use config to determine which versions can be installed and required
Strict mode will ignore version overrides for require calls
eg:
{
"lodash": ['1.0.0', '2.1.2'],
...
}
ry.installAll();
or
ry.install('lodash');
// or
ry.install('lodash', '1.0.0');
ry.install('lodash', '2.0.0');
const requirer = new ry.Requirer(pkgJson);
requirer.require('lodash'); // ==> highest possible version supported
requirer.require('[email protected]'); // ==> version 1.0.0
requirer.require('lodash', '^2.0.0'); // ==> highest version in the range between 2.0.0 and 3.0.0
requirer.require('lodash', '~2.2.0'); // ==> highest version in the range between 2.2.0 to 2.3.0
requirer.require('lodash/fp/curry'); // ==> require sub-paths from auto-detected version
requirer.require('[email protected]/array/chunk'); // ==> require sub-paths from particular version
The require
method also takes an optional third parameter:
force
- boolean ==> Forces a require call for a particular version
requirer.require('lodash', '4.0.0', true);