less than 1 minute read

This is a Zsh script for automatically managing the version of Node.js in your shell session using Node Version Manager (nvm). It does this by looking for a .nvmrc file in your current working directory every time you change directories (chpwd). If such a file is found, it changes the Node.js version to the one specified in that file. If no .nvmrc file is found, it reverts to the default version set in nvm

autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
add-zsh-hook chpwd load-nvmrc