Just like Ruby, with its rbenv and rvm, Node.js has its own version management system. The node.js eco system and community is growing at speeds we would never imagine. Seldom, but sometimes libraries simply can´t keep up with the development of the node.js core, which propagates both for and against using a version manager.
In the perfect world (although close to it when it comes to node.js), we would of course always be using the latest version of the core. Then this subject would be irrelevant.
However, since we are not living in the perfect world and the needs of running multiple versions of the core stretches outside library dependencies this might be useful in some cases. In a staging/production environment this could be useful during an upgrade for example.
Keeping it simple
And as many libraries and tools in the Node.js community, it is kept super simple solving one problem and solving it good.
no subshells, no profile setup, no convoluted api, just simple.
$ npm install -g n
Once installed, you have the possibility running multiple versions. Let´s say I want to have the latest official stable version
$ n stable
(Roll your thumbs or go fetch a coffee...) BOOM!
node -v should now display
v0.8.11 (or the current stable version).
Or why not do it hardcore, using the latest official release:
$ n latest
Or a specific version:
$ n 0.8.11
Specifying a node version in your package.json file would try using that version specific to that project.
And you can always override the version while executing a command with
n use 0.7.1 index.js.
There we have it! So
n will from now on serve as your main version
manager for different node.js versions.