Installing Node.js / npm under Ubuntu with nvm (with yarn)

Updated . Posted . Visible to the public.

I recommend install Node.js using nvm. This way you can have multiple Node versions in your ~/.nvm. You also won't need to install global packages with sudo anymore.

Node via nvm will automatically bring npm. yarn will automatically be available if corepack is enabled for node.

Installing nvm

DigitalOcean has a HOWTO for installing nvm on Ubuntu ( 16.04 Show archive.org snapshot , 18.04 Show archive.org snapshot , 20.04 Show archive.org snapshot ) that I recommend.
During the installation of node via nvm, a compatible version of npm will be installed automatically.

Installing yarn

Install yarn for the current node version

It is very easy to install yarn when node is already available. This has to be done separatly for each node version on your system, though.

For recent node versions

Corepack Show archive.org snapshot is a new node feature that automatically installs yarn (and pnpm) for you when it is called. It allows you to specify a desired yarn version inside package.json and makes sure the exact version is downloaded and used:

{
  "packageManager": "yarn@3.3.1"
}

Corepack comes with Node.js starting from 14.19.0 and 16.9.0 but is disabled by default. To enable it, call:

corepack enable

The yarn command will be available afterwards.

Note

To start a new project (no yarn version pinned in package.json) with a desired yarn version, run
corepack prepare yarn@<version> --activate

Install yarn for node < 14.19.0

For older versions of node that don't come with corepack, you can install yarn 1 manually:

npm install --global yarn

Install yarn 1 system-wide via apt (deprecated)

The yarn package Show archive.org snapshot depends on the nodejs debian package, but with nvm you no longer want to have that package installed through apt.

You can install yarn while skipping dependencies like this:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install --no-install-recommends yarn

If yarn stops updating, the imported key has expired and you need to re-run the line with apt-key add.

Migrating an apt-installed Node.js to nvm

Uninstall the nodejs package:

sudo apt remove nodejs

Check if you want to remove any custom package sources for Node.js in your /etc/apt/sources.list.d (e.g. nodelist.list).

Now install Node.js with nvm Show archive.org snapshot

Configuration in the ~/.bashrc

In case you see an error like:

Yarn requires Node.js 4.0 or higher to be installed.

Check if command -v "node" returns a path and you load NVM before Yarn. This could look like this:

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

# Load global yarn binaries
export PATH="$PATH:$(yarn global bin)"

If you want to switch the Node version automatically with a cd you can use this snippet Show archive.org snapshot .

Henning Koch
Last edit
Daniel Straßner
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2015-09-10 08:18)