The proper way to install Nodejs on Ubuntu 18.04
How to install Nodejs on a brand new Ubuntu 18.04 installation
By: Ajdin Imsirovic 26 September 2020
Sometimes we need a quick refresher of the basics. Other times, we’re brand new to the subject.
Whatever might be the reason for you looking up this tutorial, here it is: how to install Nodejs on a brand new Ubuntu 18.04 installation.
Install Nodejs
Whenever we need to add a new package to our system, we need to update the apt:
sudo apt update
Once that’s done, we’ll run this command:
sudo apt install nodejs
To make sure our installation worked, we’ll run:
nodejs -v
Alternatively, we could have run nodejs --version
, but the command above is faster to type.
Either way, we’ll get back:
v8.10.0
Install npm
To make sure we also have the Nodejs package manager (npm), we’ll run the following check:
npm -v
We’ll likely get back:
Command 'npm' not found, but can be installed with: sudo apt install npm
This is exactly what we’ll do, so we’ll run:
sudo apt install npm
After the installation is done, let’s check the version:
npm -v
The command above returns:
3.5.2
Updating Nodejs and npm versions on Ubuntu 18.04, using NVM
The next thing to do is potentially update the version of Nodejs and npm.
We could simply update them to the newest versions; however, there is a very useful alternative approach, utilizing NVM - the Nodejs version manager.
Using the Node version manager
There is a bash script known as NVM. Using NVM, we can work with a number of different versions of Node.js on our machine.
The up-to-date instructions on NVM can be found on NVM’s Github page.
Here’s how to install and use NVM on Ubuntu 18.04.
1. Install with curl
Run this curl command:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash
Running the above script does two things:
- clones the NVM repo to
~/.nvm
folder - adds nvm path to Bash profile (or ZSH profile)
We can inspect this addition by running the less utility inside bash, like this:
less ~/.bashrc
If we scroll to the bottom of the .bashrc
file we opened with the above command, we’ll see this code:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Another way to verify the NVM installation is to first reload .bashrc
with the following command:
source ~/.bashrc
… and after that simply run:
nvm -v
2. Install any Node.js version with NVM
After installing NVM with curl, we can now add any specific Node.js version to our system.
To get familiar with what commands are available, we can run the nvm -h
command. This command gives us a list of available commands with a short description for each.
We can inspect all the Node.js versions currently available on our system by running the following command:
node ls
To see all the Node.js versions that are available for installation, we can run:
nvm ls-remote
This is quite a long list; we can filter it any way we like by piping it to the grep
or less
commands. For example, in the next command we’re filtering for LTS (long term support) versions only:
nvm ls-remote | grep -i 'LTS'
This still produces quite a long and repetitive list, so for convenience, we can instead run:
nvm ls-remote | grep -i 'Latest'
Finally, with the above command we get a simple list of only four items:
v4.9.1 (Latest LTS: Argon)
v6.17.1 (Latest LTS: Boron)
v8.17.0 (Latest LTS: Carbon)
v10.22.1 (Latest LTS: Dubnium)
v12.18.4 (Latest LTS: Erbium)
Now that we know how to inspect the versions of Node.js that exist on our system and those that we have available for installation from the remote source, we can finally install a version. Based on the above narrowed-down list of various LTS versions, we can pick a version to install. For example:
nvm install v12.18.4
We can confirm that this is the active version on our system like this:
node -v
We’ll get back v12.18.4
in the console.
Additionally, we can confirm that npm
was also updated, with:
npm -v
This time, we get back 6.14.6
.
That’s it, now we know how to install any version of Node.js on Ubuntu 18.04, using NVM.
To verify that this is the current version set by NVM, we can also run:
nvm current
We’ll get back v12.18.4
again.
To make this version the default one, we’ll run:
nvm alias default 12.18.4
3. Switching between various Node.js versions
To see how this works, we first need to install another version of Node.js. We’ve already done this, so it shouldn’t be too hard.
First, we’ll list all available Node versions with nvm ls-remote
.
After that, we’ll install another version like described earlier in this tutorial. For example, let’s say we’ve installed v10.22.1, with this command:
nvm install 10.22.1
We can check all the Node.js versions on our system using this command:
nvm list
In our case, this command returns:
-> v10.22.1
v12.18.4
system
default -> 12.18.4 (-> v12.18.4)
node -> stable (-> v12.18.4) (default)
stable -> 12.18 (-> v12.18.4) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/erbium (-> v12.18.4)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.22.1
lts/erbium -> v12.18.4
Now that we have two versions of Node.js on our system, we’ll switch between them with the help of the use
command.
For example, the following command switches to the newly installed Node.js v10.22.1:
nvm use v10.22.1
And this one switches to Node.js v12.18.4:
nvm use v12.18.4
Alternatively, since we’ve se Node.js v12.18.4 to be the default version, we can switch to it using this command:
nvm use default
We’ll get back the following in the console:
Now using node v12.18.4 (npm v6.14.6)
4. Setting aliases with node versions using nvm
There’s a nifty feature of nvm: aliases.
For example:
nvm alias project-name 10.22.1
Now we can run the use
command with the project-name
alias:
nvm use project-name
Doing the above will switch to version 10.22.1 of Node.js.
Do delete the project-name
alias, we use the unalias
command:
nvm unalias project-name
Doing so will return this output in the console:
Deleted alias project-name - restore it with `nvm alias "project-name" "10.22.1"`