不同项目目录,nvm自动切换node版本

62 阅读2分钟

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

苹果MAC系统

步骤一:先安装nvm

步骤二:配置终端自动切换钩子

根据你使用的终端(bash 或 zsh,默认是 bash,macOS 新系统默认 zsh),添加钩子脚本到终端配置文件:

情况 1:终端为 zsh(配置~/.zshrc)

1、 打开 zsh 配置文件:

open ~/.zshrc # 或用 vim ~/.zshrc

2、在文件末尾添加以下代码(钩子逻辑):

Node 版本自动切换:切换目录时检查 .nvmrc

autoload -U add-zsh-hook

load-nvmrc() {

local node_version="$(nvm version)"

local nvmrc_path="$(nvm_find_nvmrc)"

若存在 .nvmrc 文件

if [ -n "$nvmrc_path" ]; then

local nvmrc_node_version=(nvmversion"(nvm version "(cat "${nvmrc_path}")")

若当前 Node 版本与 .nvmrc 不一致,自动切换

if [ "nvmrcnodeversion"!="nvmrc_node_version" != "node_version" ]; then

nvm use # 等价于 nvm use $(cat .nvmrc)

fi

若不存在 .nvmrc,切回默认版本(可选,根据需求调整)

else

if [ "nodeversion"!="node_version" != "(nvm version default)" ]; then

nvm use default

fi

fi

}

绑定钩子:每次切换目录(chpwd)时执行 load-nvmrc

add-zsh-hook chpwd load-nvmrc

初始进入终端时也执行一次(确保当前目录生效)

load-nvmrc

3、保存文件后,生效配置:

source ~/.zshrc

情况 2:终端为 bash(配置~/.bashrc 或~/.bash_profile)

打开 bash 配置文件(macOS 可能需要配置 ~/.bash_profile,Linux 通常是 ~/.bashrc):

open ~/.bashrc # 或 open ~/.bash_profile

在文件末尾添加以下代码:

Node 版本自动切换:切换目录时检查 .nvmrc

load-nvmrc() {

local node_version="$(nvm version)"

local nvmrc_path="$(nvm_find_nvmrc)"

if [ -n "$nvmrc_path" ]; then

local nvmrc_node_version=(nvmversion"(nvm version "(cat "${nvmrc_path}")")

if [ "nvmrcnodeversion"!="nvmrc_node_version" != "node_version" ]; then

nvm use

fi

else

if [ "nodeversion"!="node_version" != "(nvm version default)" ]; then

nvm use default

fi

fi

}

bash 无 chpwd 钩子,用 PROMPT_COMMAND 模拟(每次显示命令提示符前执行)

export PROMPT_COMMAND="load-nvmrc; $PROMPT_COMMAND"

初始生效

load-nvmrc

保存后生效配置:

source ~/.bashrc # 或 source ~/.bash_profile

步骤 3:在项目目录下配置 .nvmrc

添加图片注释,不超过 140 字(可选)

步骤 4:验证自动切换

添加图片注释,不超过 140 字(可选)

Windows 系统

步骤一:安装nvm

步骤 2:配置 PowerShell 自动切换(推荐)

Windows 终端默认是 PowerShell,需通过「配置文件自动执行脚本」实现切换:

1、打开 PowerShell 配置文件(若不存在则创建):

检查配置文件路径

$PROFILE

输出示例:C:\Users\你的用户名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

若文件不存在,创建目录和文件

if (-not (Test-Path $PROFILE)) {

New-Item -ItemType File -Path $PROFILE -Force

}

用记事本打开配置文件

notepad $PROFILE

2、在配置文件中添加以下 PowerShell 脚本(自动切换逻辑):

Node 版本自动切换:监听目录变化,检查 .nvmrc

function Check-Nvmrc {

获取当前目录的 .nvmrc 路径

$nvmrcPath = Join-Path (Get-Location) ".nvmrc"

if (Test-Path $nvmrcPath) {

读取 .nvmrc 中的版本号

targetVersion=GetContenttargetVersion = Get-Content nvmrcPath -Raw | ForEach-Object { $_.Trim() }

获取当前 Node 版本

$currentVersion = (node -v 2>&1) -replace 'v', '' # 去除 "v" 前缀(如 v18.17.0 → 18.17.0)

若当前版本与目标版本不一致,执行 nvm use

if (currentVersionnecurrentVersion -ne targetVersion) {

Write-Host "Found .nvmrc: switching to Node $targetVersion" -ForegroundColor Cyan

nvm use $targetVersion

}

}

}

初始进入终端时执行一次

Check-Nvmrc

监听目录切换事件(PowerShell 5.1+ 支持)

Register-EngineEvent -SourceIdentifier PowerShell.LocationChanged -Action {

Check-Nvmrc

} | Out-Null

3、保存文件后,重启 PowerShell(非管理员模式即可),生效配置。

步骤 3:在项目目录下配置 .nvmrc

步骤 4:验证自动切换