Working with NodeJS is a lot of fun, managing versions not so much. If you have ever done any serious Node development you have probably ran into some version problems at some point. Luckily that is a problem that is easily solved with nvm.
What is nvm?
nvm stands for Node Version Manager. It's really just a bash script that manages your Node versions for you. When you install it, it will create a ~/.nvm folder in your home directory (unless you specify another directory of course) and it will manage your versions in there.
You can install nvm the "easy way" by just running:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
Warning: NEVER, really NEVER run a bash script from a remote server without checking it out first. A lot of harm can be done to your machine.
A safer way is to install nvm manually:
git clone https://github.com/creationix/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags` . ~/.nvm/nvm.sh
and finally add the following to your ~/.zshrc or ~/.bashrc:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
The install script will do all that for you but it's generally a bad idea to just run bash scripts if you haven't read the source.
Installing a new Node version
Now when you have nvm up and running it's time to add a new version and to create aliases. My favourite blogging platform Ghost recommends that you use the latest Node v0.10.x release.
nvm will install the version you specify including all the patch releases. So running
nvm install 0.10 will install v0.10.40 but
nvm install 0.10.23 would install v0.10.23.
nvm will also switch to your newly installed version after installation. It's that easy.
After a while you are probably going to forget what Node version every project you work with uses. That's why you have aliases. Creating an alias is done with the following syntax:
nvm alias [name] [version].
I have created an alias for Ghost by running
nvm alias ghost 0.10. Now rather than running
nvm use 0.10 I can just run
nvm use ghost.
To remove an alias run
nvm unalias ghost. This will only remove the alias of course, not the Node version.
Global package installation
When you install a Node package globally on a nvm managed version, it will install it to the ~/.nvm/[version]/bin directory. This is great because I might want to use the process manager pm2 while running Ghost without installing it on my system's Node instance.