How to switch between Node.js versions with Homebrew (2021)

Published May 4, 2021; last updated on May 10, 2021
How to switch between Node.js versions with Homebrew (2021)

Homebrew is an awesome tool for installing and managing packages installed on macOS. It is also the best way to install Node.js and, with that, npm. But sometimes you’ll need a different version of Node.js than the latest. In this tutorial I’ll show you how to switch between multiple versions of Node.js on macOS with Homebrew.

First we need to make sure that your environment is ready. If you’ve not already done so, please make sure that Node.js is installed via Homebrew. First, check if Homebrew is installed with brew -v. If not, go to the the website brew.sh and copy-paste the command given in your terminal to install it. Test if Node.js is already installed somewhere else with node -v: if it gives you a version number, uninstall it by following these instructions. Now you’re ready to install node via Homebrew: run brew install node. This installs the latest version of Node.js.

  1. Installing the older versions of Node.js that you need
  2. Switching between Node.js versions on macOS

Installing older versions of Node.js

Now that you’ve got the latest version of Node.js installed, we’ll also install the older versions of Node.js that you need. Do so for each major version by running the following command (replace 14 with a major version, like 13, 14 or 15).

brew install node@14

This installs the latest version of Node.js 14.

Switching between Node.js versions on macOS

So, how do we switch between Node.js versions on macOS? To do so, we’ll add an alias to our .zshrc file. Running the following command will open up the nano text editor in the terminal:

nano ~/.zshrc

Now, paste the following code in the editor. Add a new line for each version of Node.js and replace node@16 with the correct major version.

alias node16='export PATH="/usr/local/bin:/usr/local/opt/node@16/bin:$PATH"; node -v'
alias node14='export PATH="/usr/local/opt/node@14/bin:$PATH"; node -v'

Why is the PATH for Node.js 16 different?

The reason has to do with npm. This comes bundled with Node.js. If you don’t add this, npm will stay on the old version when you switch back to the latest version of Node.js.

Save the file with control + O and hit enter. Exit the editor with control + X.

Now the next time that you open up a new terminal, you can just type node14 to switch to Node.js 14 and node16 to switch back to version 16 (which is the latest version now). The nice thing here is, is that the switch only applies to one terminal session. Each time you open a new terminal window, you need to run this code again.

So if you want to work on an older version, run one of the specified commands. At the end of the terminal session, the ‘environment’ is destroyed, and you’re always automatically using the latest version of Node.js unless you choose not to.

I’m using bash instead of zsh. What to do?

Running bash instead of zsh is no problem. Just put the above code in your .bashrc file instead or the .zshrc file.

Wrapping up

As you see, it’s very easy to switch between Node.js versions on macOS by just using Homebrew. Homebrew has two advantages: it makes the managing of versions very easy ánd it allows you to easily work with multiple versions.

As a last tip, if you want to make an older version of Node.js the default, do the following:

brew unlink node
brew link --overwrite node@14
Image Ralph J. Smit
Ralph is a designer gone developer. He happily lives in the Netherlands. His passion for good design drove him towards development, because he felt that no-code tools were too limiting. On this blog, Ralph writes the articles he would've wanted to have during his continual developer journey. → Follow on Twitter

Comments

Leave a reply

Your email address will not be published. Required fields are marked *