How to install Node.JS: Secrets and Best Practices for Every Platform Revealed
Tags: node, javascript, tutorial, certification
Published: 2024-06-11 14:08:14

# Overview 

Node works on many platforms, there are a lot of ways to install it,
However, there are some practices we must follow while installing Node on Windows, Linux, and MacOS machines.

# Learning Objectives

At the final of this article you will be able to:

- Discover the best way to install and use Node in each platform.
- Understand what executables are installed
- Manage multiple Node versions
- How to set a default Node version on your Machine.

# Best practices to install Node on different platforms

The most common way to install Node is by using an OS package manager but this is not the best way to do it due to the reasons below:

- OS package manager tends to lag behind the faster Node.JS release cycle (the latest versions cannot be available on the OS package manager)
- The placement of binaries, folders, and files isn't standardized across OS package managers which can cause incompatibility issues.
- Installing Node using a package manager requires the use of ```sudo``` on Non-Windows systems when we want to install a global package using the `npm`, and it's a critical security issue because we grant root privileges to the install process of third-party libraries.

We can also install Node directly from the Node.JS website but, Again a Non-Windows system requires the root privileges for installing global packages.

# Installing NVM (Non-Windows systems)

The recommended way to install Node in Non-windows systems is by using a Node Version Manager, in particular [nvm](https://github.com/nvm-sh/nvm).

To install NVM we must use the install script available on [Github](https://github.com/nvm-sh/nvm/blob/v0.39.5/install.sh), if you need to use a newer version you just need to change the version in the URL.

If you have curl installed already (it usually is) run the command bellow:

```bash
curl -o- htt‌ps://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
```

> If using zsh (e.g., on newer macOS releases) the bash part of the command can be replaced with zsh.

You can download and execute the file as well:

```bash
cat install.sh | bash
```

> Again you can replace `bash` by `zsh`

To check if the installation was successful use the following command:

```bash
command -v nvm
```

> It should output `nvm`.
> <br /> If this fails on Linux, close and reopen the terminal and try running the command again.
> <br /> On macOS see GitHub for in-depth [troubleshooting instructions](https://github.com/nvm-sh/nvm#troubleshooting-on-macos).

Now that you have the `nvm` installed, go ahead and install a Node version by using this command:

```bash
nvm install 20
```

This command will install a Node version respecting the major version but, minor and patches will change, if you want to install a specific version you must provide the entire version number.

> You can install any version you want using this command above.
> By default the nvm will set the first Node version you installed as the default, but you can override the default version using the command `nvm alias default 20`

To check if the installation was successful run this command:

```bash
node -v
```

```bash
npm -v
```

And that's it now you have the Node installed on your machine following the best practices.

## Installing NVS (Windows systems)

While we have `nvm` for Linux and MacOS, and an unaffiliated `nvm-windows` version manager, the recommended version manager for Windows is [nvs](https://github.com/jasongin/nvs), it is cross-platform and can be used on Linux and MacOS, but on these systems the most common is `nvm`.

To install `nvs` use the following command:

```powershell
winget install jasongin.nvs
```

Or using chocolatey

```powershell
choco install nvs
```

You can visit the [nvs releases page](https://github.com/jasongin/nvs/releases), and download the `msi` `file of the last release to install it.

> On the first time running `nvs`, the command may ask for agreement to terms.

Once installed, install the latest version 20 release:

```bash
nvs add 20
```

then execute the command below to select the installed version

```bash
nvs use 20
```

> You can install any version you want using the commands above.
> By default the `nvs` doesn't set a Node version as default, but you can set the default version using the command `nvs link 20`

To confirm if Node was installed successfully use this command:

```bash
node -v
```

```bash
npm -v
```

And that's it now you have the Node installed on your machine following the best practices.

# Which binaries are included with Node ?

The Node installation includes the `npm` installation which is the Node package manager that we use to manage the third-party libraries that we will use on the projects or as a global package on our machines.