在服务器上经常会有不同的项目需要不同版本的情况,这时候需要使用node版本管理软件来管理多个版本的node
现在主流的node版本管理工具有两个,nvm和n。
它们有各自的特性,适合不同的场景
- n
n命令是node的一个模块,也就是说必须是在有node环境的情况下才能进行node的版本管理的。
# n的全局安装命令
npm install -g n
在安装完成之后,就可以使用n来管理不同版本的node。
n在切换不同版本的node时,会将指定版本的node,复制进/usr/local/bin
下。由于普通用户没有权限对该目录进行写操作,所以需要sudo来进行提权。
n的没有对全局模块进行管理,所有版本的node模块都是放在/usr/local/lib/node_modules
下的,因此有可能在切换了node版本后出现模块错误的情况。
nvm是一个独立的软件包,不需要依存node环境,反过来是node依赖于nvm。
# nvm安装方法
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
安装完成后检查一下本地的shell配置(~/.zshrc
或~/.bashrc
),看是否有如下配置
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
然后重载一次配置就可以使用nvm了
source ~/.bashrc #bash环境
source ~/.zshrc #zsh环境
nvm install node-version #升级指定版本的node
nvm安装实际是将不同的node版本存储进~/.nvm/node-version
内,然后修改PATH,将指定版本的node路径加入,这样就实现了切换node版本
在不同的项目需要切换不同版本的node,如果node版本过多的话,每次使用nvm或者n切换比较麻烦,这时候需要使用一个叫avn的工具
- avn
avn是一个node模块,支持nvm,n。
# 安装方法
npm install -g avn avn-nvm avn-n #按需要安装nvm版或者n版的
avn setup
在项目的根目录放一个.node-version
的文件,按照semver的格式书写版本号,例如:8.9.4,然后在进入该项目目录的时候avn会自动切换node版本。
是因为avn默认是将配置写入到 ~/.zshrc
里面的,所以需要将avn的配置加到你所用的shell环境,如bash是在 ~/.bashrc
# 将avn配置写入~/.bashrc
echo " [[ -s "$HOME/.avn/bin/avn.sh" ]] && source "$HOME/.avn/bin/avn.sh" " >> ~/.bashrc
# 重载bashrc
source ~/.bashrc
http://taobaofed.org/blog/2015/11/17/nvm-or-n/
https://www.jianshu.com/p/a1db0f75866c
https://www.helplib.com/GitHub/article_110290