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