Installs node modules to versioned or custom directories.
MIT License
Installs node modules to versioned or custom directories.
Very useful if you want to use multiple versions of the same package as top-level dependencies.
Install globally: npm install npm-install-version -g
$ niv [email protected]
# installs [email protected] to node_modules/[email protected]/
$ niv [email protected] --destination csjs-v1
# installs [email protected] to node_modules/csjs-v1/
$ niv scott113341/csjs#some-branch --overwrite
# installs https://github.com/scott113341/csjs#some-branch to node_modules/scott113341-csjs#some-branch/
# notice how the installation directory is sanitized (the "/" is replaced with a "-")
# overwrites the previously installed version there, which is useful if I just updated "some-branch"
usage: niv <package> [options...]
required:
package
the package to be installed
gets passed directly to "npm install <package>"
optional:
--destination, -d
the destination install directory inside node_modules/
default: sanitized <package>
--overwrite, -o
overwrite if there is already a package at [destination]
default: false
--quiet, -q
suppress informational output
default: false
--help, -h
display this message
Install locally: npm install npm-install-version --save-dev
Let's say we want to benchmark a few versions of csjs
against each other:
const niv = require('npm-install-version');
const benchmark = require('./some-benchmark-function.js');
niv.install('[email protected]');
// installs [email protected] to node_modules/[email protected]/
niv.install('[email protected]');
// installs [email protected] to node_modules/[email protected]/
const csjs_old = niv.require('[email protected]');
const csjs_new = niv.require('[email protected]');
// require the old and new versions of csjs
benchmark([csjs_old, csjs_new], 'some-test-input');
// run our fake benchmark function on the old and new versions of csjs
const niv = require('npm-install-version');
niv.install('[email protected]', { destination: 'some-dir' });
// installs [email protected] to node_modules/some-dir/
niv.install('[email protected]', { destination: 'some-dir' });
// doesn't do anything because node_modules/some-dir/ already exists
niv.install('[email protected]', { destination: 'some-dir', overwrite: true });
// installs [email protected] to node_modules/some-dir/, overwriting the existing install