nvm最佳实践

1. 使用nvm安装node有什么优势?

安装node很方便,只需要一条命令 可以轻松切换node版本 可以多版本node并存

2. 安装

使用 curl安装 nvm:

curl -o- http://mirrors.xtcoder.top/software/nvm/v0.39.5/install.sh | bash

完成后 nvm 就被安装在了 ~/.nvm 下了,然后在你的profile(~/.bash_profile, ~/.zshrc, ~/.profile)中加入:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

3. 下载

nvm 默认是从 node 官网下载的,国外的服务器,必然很慢。查看 ~/.nvm/nvm.sh 我们可看到:

# Setup mirror location if not already set
if [ -z "${NVM_NODEJS_ORG_MIRROR-}" ]; then
  export NVM_NODEJS_ORG_MIRROR="https://nodejs.org/dist"
fi

nvm 支持从镜像服务器下载包,所以我们只要添加一个环境变量 NVM_NODEJS_ORG_MIRROR 即可。

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

然后下载

nvm install 8.11.1 #下载8.11.1
nvm use 8.9.0 #使用8.9.0
nvm alias default 6.10.0 #设置默认版本

4. 自动切换

不同的项目我们可能使用不同的 node 版本,老是使用 nvm use 切换也是个麻烦的事情,因为你也不一定能记住这个项目使用了哪个版本,nvm 的 issue 里面有人说如果有人实现这个特性,他愿意付2美刀>_<

I would pay 2$ if somebody implements this feature.

我们希望能够进入目录后,自动使用当前项目设置的 node 版本,首先可以创建一个.nvmrc文件

node -v > .nvmrc

然后在 .zshrc 加入一个钩子:

autoload -U add-zsh-hook
 load-nvmrc() {
   if [[ -f .nvmrc && -r .nvmrc ]]; then
     nvm use
   fi
 }
add-zsh-hook chpwd load-nvmrc