With the amount of progress in Node, at some point, you will encounter version problems. For example, I recently encountered a problem with my local Ghost installation because I'm using the latest version of Node. Ghost, being a large Node application, hasn't yet migrated to the latest version and is still using a very old version -
Luckily, this can be solved by using
nvm. NVM simply means Node Version Manager and is similar to
rbenv in Ruby. It handles the Node versions for you. Once installed, it creates a
~/.nvm folder in your home directory and it will manage Node in that directory.
nvm, just follow the instructions at the official Github page. Depending on your operating system, there will be slight variations in the installation process.
I'm using OS X and
zsh as my shell, so I just typed the following commands:
brew update brew install nvm
After installation, I also had to add the path of NVM for it to be recognized in my terminal. I added the following lines to my
export NVM_DIR=~/.nvm . $(brew --prefix nvm)/nvm.sh
The dot in the second line above is required.
NVM allows you to easily switch to different Node versions without messing up your system. To install a different version of Node, just use the
nvm install 4.2 nvm install 5.5
It will automatically switch to the newly installed version after installation. You can use the following command to switch to your desired Node version. For example, if I want to switch to an older version, say
v.10.40, I would simply type:
nvm use 0.10.40
To verify which Node version you are currently using, use the
which node /* /Users/karlo/.nvm/v0.10.40/bin/node */
You can also check which Node versions you have already installed so far by using the
nvm ls /* v0.10.40 v4.2.0 -> v5.5.6 system */
To view the available versions of Node that you can install, use
When you no longer use a specific version of Node, you can also remove it using the
nvm uninstall 4.2.0
NVM is one of the indispensable tools for me when working on Node projects. It's a very useful tool when working on multiple Node applications that are using different versions of Node.
When you are installing a global package on a system managed by
nvm, it will install the package to the
~/.nvm/[version]/bin directory. This means that when you install a new global package, you have to keep in mind that the global package installed using
npm install -g command will be installed in the directory of the current Node version that is active.