Installs node modules to versioned or custom directories.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.babelrc
.editorconfig
.gitignore
.nvmrc
.travis.yml
LICENSE
README.md
package.json

README.md

npm-install-version

npm-version build-status dependencies dev-dependencies

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.

CLI Usage

Install globally: npm install npm-install-version -g

Example Usage

$ niv csjs@1.0.0
# installs csjs@1.0.0 to node_modules/csjs@1.0.0/

$ niv csjs@1.0.0 --destination csjs-v1
# installs csjs@1.0.0 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"

Full Usage

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

Programmatic Usage

Install locally: npm install npm-install-version --save-dev

Basic Example

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('csjs@1.0.0');
// installs csjs@1.0.0 to node_modules/csjs@1.0.0/

niv.install('csjs@1.0.1');
// installs csjs@1.0.1 to node_modules/csjs@1.0.1/

const csjs_old = niv.require('csjs@1.0.0');
const csjs_new = niv.require('csjs@1.0.1');
// 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

Advanced Example

const niv = require('npm-install-version');

niv.install('csjs@1.0.0', { destination: 'some-dir' });
// installs csjs@1.0.0 to node_modules/some-dir/

niv.install('csjs@1.0.1', { destination: 'some-dir' });
// doesn't do anything because node_modules/some-dir/ already exists

niv.install('csjs@1.0.1', { destination: 'some-dir', overwrite: true });
// installs csjs@1.0.1 to node_modules/some-dir/, overwriting the existing install