Install And Run Any Node Version
March 30, 2020 by Areg Sarkissian
Installing NVM Node Version Manager
NVM is a bash script that is installed into your shell
.bash_profile dotfile that manipulates the
PATH variable to point to an installed version of node.
You can install NVM using the following
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
Below are the bash commands that get added to my
.bash_profile file after running the curl command that downloads and runs the install.sh script:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm and prepends to $PATH variable [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
The install script downloads the
.nvm directory and adds it to the $HOME directory.
The first line of the NVM lines added to the
.bash_profile file, setup this directory for the following lines to use.
The second NVM line checks for the existence of a downloaded
nvm.sh script file in the
$HOME/.nvmdirectory and sources the file if it exists which runs the script. The Last NVM line checks for the existence of a downloaded
bash_completionscript file in the
$HOME/.nvm directory and sources the file if it exists which runs the script.
These lines get executed when the bash profile file is sourced.
Note: You can move the NVM
.bash_profilescript to the appropriate dotfile on your system, as long as it gets executed at shell startup.
After installation you can check the installed version of NVM:
Note: To upgrade NVM we just have to re-run the installation curl command. Do not forget to source the updated .bash_profile file or start a new shell for the update to take effect.
You can find the NVM documentation here:
Using NVM to install and switch between node versions
You can find all versions of node available to install from the node repo using:
You can check installed versions of node using:
You can globally install the latest stable node version:
nvm install stable
Lets say one of the available versions of node is version 13.12.0.
We can install version 13.12.0 of node like so:
nvm install 13.12.0
We can also upgrade to latest version of
npm at the same time by adding the
nvm install 13.12.0 --latest-npm
We can show the path for installed version 13.12.0:
nvm which 13.12.0
We can show the current version of node being used:
We can uninstall the installed version 13.12.0:
nvm uninstall 13.12.0
We can switch to using version of 13.12.0 node if we are currently using another version:
nvm use 13.12.0
Note: Every new shell session will revert back to using the latest installed node version. So we have to switch the version every time we launch a new terminal tab. See section
Using NVM configuration files for using per project node versionsbelow for methods to mitigate having to type the entire command every time.
We can upgrade to latest
npm for the current version of node, in this case 13.12.0:
# installing the current version nvm use 13.12.0 # some time later upgrade the npm version for version 13.12.0 of node nvm install-latest-npm
An alternative way to upgrade
npm is using its current version to upgrade itself
nvm use 13.12.0 #install the latest version globally npm install -g npm@latest
Note: NPM package manager comes bundled with the ``NPX` node package runner so they are versioned together and upgraded to the latest version together.
Using NVM configuration files for using per project node versions
We can eliminate the need to specify the version node to use with the
nvm use command on a per project basis if we add a
.nvmrc file in our node project directory.
For example to use version 13.12.0 in your project, cd into your project directory and type:
touch .nvmrc echo '13.12.0' > .nvmrc
Now every time you cd into the project directory, type:
Since the version is not specified in the command, it will look for a version to use in the
You can set a bash alias
alias nu=nvm use in your bash profile file to make this easier to type. With this command and a
.nvmrc file in your project directory all you have to type is
nu to switch to the node version specified in the
There are also hacks to make
nvm use command execute automatically by aliasing the change directory (
cd) command to check for the existence of the
.nvmrc file and automatically run the
nvm use command.
The following article talks about using node
engines as an alternative to switching node versions:
Checking NVM, Node, NPM , NPX versions
Installing node installs the NPM package manager and NPX package runner at the same time.
You can check the version of each:
# check global nvm version nvm --version
# check current global node version node -v
# check current global npm version npm -v
# check current global npx version npx -v
Yarn is an alternative to the npm package manager.
While you can install yarn via npm, it is recommended that you install it with your Operating System package manager.
Here is the MacOS install procedure using homebrew:
# install yarn globally brew install yarn
# upgrade yarn brew upgrade yarn
# check global yarn version yarn --version