配置nvmrc
前言
当开发多个项目时,每个项目运行环境要求的 node 版本不一样,那么我们就需要给每个项目指定 node 版本,也就是通过终端执行 nvm install 和 nvm use 命令去安装并切换版本。
但是每次都要在终端手动执行命令就很麻烦,特别是项目越来越多的时候,容易忘记切换版本或切换错版本,会导致项目启动不了或运行中有一些错误。
这就需要一个管理 node 版本的方法,自动切换 node 版本,这时 .nvmrc 就该上场了
.nvmrc是什么
通过上述说明大概知道.nvmrc文件,就是用来管理我们项目使用的node.js版本的。这个文件非常简单:只有一个nvm可识别的node.js版本的文本。比如:v18.12.0
.nvmrc文件怎么使用?
你可以创建一个 .nvmrc 文件,文件内容是一个node版本的数字或者其它nvm可以理解的文本;详情可以在终端输入 nvm --help 查看。
有了.nvmrc文件后,我们在终端没有指定版本时执行 nvm use, nvm install, nvm exec, nvm run, 和 nvm which 命令时会使用 .nvmrc文件指定的版本。
创建 .nvmrc 文件
举个例子,在当前目录下,让nvm指定18.12的最新发布版本,最新发布的LTS版本,最新发布的node版本。 使用 echo 字符串 > 指向 文件名可以把字符串填入指向的文件中并创建文件。使用以下命令会创建 .nvmrc文件
$ echo "18.12" > .nvmrc
# 设置最新LTS版本
$ echo "lts/*" > .nvmrc
# 设置最新版本
$ echo "node" > .nvmrc
nvm use
等命令将从当前目录向上遍历目录结构寻找文件.nvmrc
。也就是说,在带有 .nvmrc 的目录的任何子目录中运行nvm use等命令,.nvmrc 都会起作用。
.nvmrc
文件必须是一个 <version>
符合 nvm --help 所列出的,版本号后跟换行符。不允许尾随空格,并且需要尾随换行符。
像下图一样,v14.21.3后面没有空格,直接回车换行。
深度集成到shell终端
您可以使用avn它来深度集成到您的 shell 中,并在更改目录时自动调用nvm。
如果您更喜欢轻量级的解决方案,可以使用下面的方法。
zsh 终端根据 .nvmrc 文件自动执行切换node版本 在 $HOME/.zshrc
中添加以下代码后。每当进入一个包含 .nvmrc
文件的目录时自动调用 nvm use
, .nvmrc
文件的字符串告诉 nvm 使用哪个版本的node.js
# 打开 home 目录,并编辑 .zshrc 文件
$ cd
$ vi .zshrc
这是需要写入到 .zshrc
的代码:
# 这一段代码复制到 .zshrc 文件中
# place this after nvm initialization!
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
编辑好 .zshrc
文件后,执行 source .zshrc
使命令生效
$ source ~/.zshrc
在有.nvmrc
文件项目,打开vscode
的集成终端,会发现已经自动运行nvm use
,命令行有相应的输出。