前置知识
需要了解一些关于 nvm 的基本知识。
nvmrc 如何使用
创建一个 .nvmrc
文件,文件内容是一个 Node 版本的数字或者其它 nvm 可以理解的文本内容(例如:v14.21.3
, 可以在终端输入 nvm --help
查看更多使用方法)。有了 .nvmrc
文件后,我们在终端没有指定 Node 版本时执行 nvm use, nvm install, nvm exec, nvm run, 和 nvm which
命令时会使用 .nvmrc
文件指定的 Node 版本。
nvm use
等命令将从当前目录向上遍历目录结构寻找文件 .nvmrc
。也就是说,在带有 .nvmrc
的目录的任何子目录中运行nvm use
等命令,.nvmrc
都会起作用。
集成到 shell
以 zsh
为例,编辑 .zshrc
文件,添加以下代码:
autoload -U add-zsh-hook
load-nvmrc() {
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" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
编辑保存之后,执行 source ~/.zshrc
使内容生效。
此时,在有 .nvmrc
文件项目打开终端,会发现已经自动运行 nvm use
:
$ j test
/Users/Maria/Desktop/test/
Found '/Users/Maria/Desktop/test/.nvmrc' with version <v14.21.3>
Now using node v14.21.3 (npm v6.14.18)
如果没有找到 .nvmrc
,会切换到 system default 的 Node 版本:
$ j desk
/Users/Maria/Desktop
Reverting to nvm default version
Now using node v20.0.0 (npm v9.6.4)
注意
.nvmrc
文件必须是一个<version>
符合nvm --help
所列出的,版本号后跟换行符,不允许尾随空格