用途
nvm Shell Integration 用于在切换目录时自动激活正确的 Node 版本。它通过 shell 钩子实现按项目自动切换 nvm 版本,避免每次进入项目目录后手动执行 nvm use。该技能定位为在 nvm-setup 完成基础 shell 加载之上的更深层集成。
主要能力
- 在目录切换时自动执行 nvm use,使项目对应的 Node 版本生效。
- 当 .nvmrc 指定的版本尚未安装时,自动执行 nvm install。
- 提供 bash、zsh、fish 三种 shell 的自动切换钩子示例。
- 支持停用 nvm 并恢复 PATH,例如使用 nvm deactivate 移除 PATH 中的 nvm 并恢复系统 node,或使用 nvm use system 切换到系统安装的 Node。
- 提供验证自动切换是否生效的方法。
使用方式
以 bash 为例,将以下函数追加到 ~/.bashrc:
cdnvm() {
command cd "$@" || return $?
nvm_path="$(nvm_find_up .nvmrc | command tr -d '\n')"
if [ -n "$nvm_path" ]; then
local nvm_node_version=$(nvm version "$(cat "$nvm_path/.nvmrc")")
if [ "$nvm_node_version" = "N/A" ]; then
nvm install
elif [ "$nvm_node_version" != "$(nvm version)" ]; then
nvm use
fi
fi
}
alias cd='cdnvm'
停用 nvm 并恢复 PATH:
nvm deactivate # Removes nvm from PATH, restores system node
nvm use system # Switch to system-installed Node
验证自动切换:
echo "20" > /tmp/test-project/.nvmrc
cd /tmp/test-project # Should auto-switch to Node 20
node -v # Should show v20.x.x
示例文件包括:examples/shell-integration.md(集成选项概览)、examples/auto-use-bash.md(Bash 自动切换钩子)、examples/auto-use-zsh.md(Zsh 自动切换钩子)、examples/auto-use-fish.md(Fish 自动切换钩子)、examples/restore-path.md(PATH 恢复与 nvm deactivate)。
适用场景
- 在多个使用不同 Node 版本的项目之间频繁切换目录。
- 希望通过 .nvmrc 统一团队或本机的 Node 版本选择。
- 需要在 bash、zsh 或 fish 中实现一致的自动版本切换体验。
- 需要临时停用 nvm 或切回系统 Node 进行排查或对比。
限制
基础 shell 加载属于 nvm-setup 的职责,本技能只在其之上添加更深层集成。资料未提供除 bash、zsh、fish 之外其他 shell 的支持说明,也未提供 Windows 环境、具体版本兼容范围或性能影响等信息。