vv13
博客关于我

NVM 进阶技巧

自动切换 Node 版本

首先,在工程目录下创建一个 .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