首先,在工程目录下创建一个 .nvmrc
文件,在其中指定 Node 版本:
echo "v10.22.0" > .nvmrc
然后在 $HOME/.zshrc
加入下述脚本,该脚本会自动为你切换到指定的 Node 版本,如果文件夹内 .nvmrc
文件不存在,就会切换回默认的 Node 版本:
# place this after nvm initialization!
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
当使用 nvm 管理 Node 时,不可避免地我们需要去安装一些全局包,可通过以下命令查看当前安装了哪些包:
$ npm list -g --depth=0
├── @angular/cli@10.0.5
├── commitizen@4.1.2
├── forever@3.0.0
├── http-server@0.12.3
├── json-server@0.16.1
├── npm@6.14.6
├── ts-node@8.10.2
├── typescript@3.9.7
└── vuepress@1.5.2
执行 which ts-node
你会发现它其实安装在对应版本的 Node 文件夹中:
/Users/xx/.nvm/versions/node/v1x.xx/bin/ts-node
这样一来,如果我们要升级切换默认版本,就得重新安装一遍,可以通过以下参数避免:
nvm install --lts --reinstall-packages-from=current
nvm install 6 --reinstall-packages-from=5