Is it possible to install npm package only if it has not been already installed? Is it possible to install npm package only if it has not been already installed? bash bash

Is it possible to install npm package only if it has not been already installed?


You could try npm list protractor || npm install protractor@2.1.0

Where npm list protractor is used to find protractor package.

If the package is not found, it will return npm ERR! code 1 and do npm install protractor@2.1.0 for installation


with bash you can do

[ $(node -p "require('protractor/package.json').version") != "2.1.0" ] && npm install protractor@2.1.0


Function version of the excellent answer by @JeromeWAGNER:

function install_package_if_needed() {    local p=${1:-Package required}    local v=${2:-Version required}    shift 2    local i=$(node -p "require('$p/package.json').version" 2>/dev/null)    [ "$i" == "$v" ] || npm "$@" install "$p@$v"}

Use like:

$ install_package_if_needed protractor 2.1.0

To pass additional options to npm, specify them after the version, like so:

$ install_package_if_needed protractor 2.1.0 -g