Like any good developer, I use Homebrew to manage my softwares, compilers, and so on. I've also been using the
brew installation of
npm for quite sometimes now.
But every time I tried to update all the packages installed globally with
npm, I had the same error saying that
npm could not update itself.
Some research on Google brought me to issue #22408. As you can see, this bug is quite common and even if there are different mildly working workarounds...
"...Package managers managing package managers rarely works out well..." - janv
I first tried installing
--whithout-npm, but I found out that I don't really like partial management as I often forget what I need to install when setting up a new machine,
npm in that case...
Node Version Manager
For those familiar with Ruby, it is highly recommended to use a Ruby Version Manager such as rbenv or rvm. It works like a charm when you need to manage different versions of Ruby and/or don't want to screw up the system version of Ruby.
It turns out that something similar exists for
node! It is called
nvm for Node Version Manager. The good news is that you can install
brew which is exactly what I needed!
So let's get started !
First, pull the latest version of
brew by running:
$ brew update && brew upgrade
Then, we simply need to install
$ brew install nvm
Finally, we need to add the following line to our
.zshrc, to be able to run
nvm from the command line:
$ echo "source $(brew --prefix nvm)/nvm.sh" >> ~/.zshrc
And that's it!
Installing node & npm
nvm is not enough, we now need to install
To print out the list of all the available versions of node, simply run:
$ nvm ls-remote
We want to install the current stable version which is v0.10.26, so we need to run:
$ nvm install -s v0.10.26
-s flag means we want to compile
node from source.
When the installation process is finished, our brand new
npm will be installed!
The great thing with
nvm is that you can use a different version of
node in each of your shell instances. But if you want to stick to the latest version, you can set it as
default by running:
$ nvm alias default 0.10.26
Make sure everything is up and running by typing
node -v && npm -v.
That's all folks! You can now manage different versions of
node/npm without even thinking about it. :)