Press "Enter" to skip to content

How to set up nvm to work with fish shell?

Recently, I switched from oh-my-zsh to a fish shell, and I didn’t regret it. Fish is a nice and user-friendly command-line shell. fish supports powerful features like syntax highlighting, autosuggestions, and tab completions that work, with nothing to learn or configure.
But when I tried to install nvm (Node Version Manager) I had a problem, the shell didn’t recognize the nvm command. After some investigation, I found the solution.

First, you need to install a fisher. Fisher is a package manager for the fish shell. Download fisher.fish to your functions directory or any directory on your function path.

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

Your shell can take a few seconds before loading newly added functions. If the fisher command is not immediately available, launch a new session or replace the running shell with a new one.

After installing the fisher, you need to add the Bass package. Bass makes it easy-to-use utilities written for Bash in a fish shell. Using fisher:

fisher add edc/bass

Create a new fish file for nvm:

touch ~/.config/fish/functions/nvm.fish

And add fish function to it to load nvm:

function nvm
    bass source ~/.nvm/nvm.sh -- no-use ‘;’ nvm $argv
end

And you are ready-to-use NVM.

How does NVM work?

If you want to download, compile, and install the latest release of node you just need to do this:

nvm install node # “node” is an alias for the latest version

To install a specific version of node:

nvm install 10.10.0 # or 8.9.1, etc.

Important to know is that the first version installed becomes the default. New shells start with the default version of node.

To set a default Node version in any new shell, use the alias ‘default’:

nvm alias default [version of node] # e.g.
nvm alias default 12.13.1

If you want to use a specific version of NodeJS for your project, you can specify the NodeJS version inside of .nvmrc file inside of your project e.g. 12.13.1 and then activate it using nvm use command in your shell.

For more information about nvm click here.

One Comment

  1. James Mann
    James Mann November 30, 2019

    Wow such an informative article ?

Leave a Reply

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