In general, I love the simplicity of installing software with Homebrew on a mac. But, when installing programming languages, I’ve found that it often leads to more complications when I later want to use or test a particular version for compatibility with particular libraries. Because Homebrew makes it difficult (and often impossible) to install older versions of a package, I often have difficulty isolating points of failure when troubleshooting.
For example, recently I was trying to quickly install Ember.js on a friend’s computer. To get up and running as quickly as possible, I ran the following commands:
$ brew install node watchman $ npm install -g ember-cli $ ember new example $ cd example $ ember server
Then, the server was unresponsive unless I uninstalled watchman, which was strange because I had the same version numbers installed on my machine and they were working fine. At this point, I decided to uninstall everything and install everything the same way I had before. And then after installing the same software, everything worked as expected.
Instead of installing
node through Homebrew, I installed it with nvm.
Here’s how I did it:
$ brew uninstall --force node # https://github.com/creationix/nvm#manual-install $ export NVM_DIR="$HOME/.nvm" && ( git clone https://github.com/creationix/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" origin` ) && . "$NVM_DIR/nvm.sh"
Then add the following to your
.zshrc like you do with rbenv for ruby.
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
Once you have
nvm installed, you can install a particular version of node.
I ran the following:
$ brew install watchman $ nvm install --lts $ npm install -g ember-cli $ ember new example $ cd example $ ember server
Anyway, I hope this will help save you some from unnecessary head scratching when trying to get a dev environment setup. Happy hacking!
My understanding is that you can do something similar when installing node on Linux.