Skip to content

Instantly share code, notes, and snippets.

@beatrizsmerino
Created January 15, 2026 10:17
Show Gist options
  • Select an option

  • Save beatrizsmerino/7ec034799cc69eaa53746a1c3fbdb264 to your computer and use it in GitHub Desktop.

Select an option

Save beatrizsmerino/7ec034799cc69eaa53746a1c3fbdb264 to your computer and use it in GitHub Desktop.
ZSH script to automatically switch Node.js version based on .nvmrc file
#!/bin/zsh
# =============================================================================
# NVM Auto-Switch
# =============================================================================
# Automatically switches Node.js version when entering a directory with .nvmrc
#
# Features:
# - Detects .nvmrc file in current directory
# - Installs Node version if not available
# - Switches to the specified version automatically
# - Reverts to default version when leaving project directory
#
# Usage:
# Add this line to your .zshrc:
# source ~/zsh-scripts/nvm-auto-switch.sh
#
# Requirements:
# - nvm (Node Version Manager) must be installed and loaded before this script
# - zsh shell
#
# References:
# - https://github.com/nvm-sh/nvm#nvmrc
# - https://github.com/beatrizsmerino/vitepress-setup
# =============================================================================
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
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment