2018-3-29
在服务器上经常会有不同的项目需要不同版本的情况,这时候需要使用node版本管理软件来管理多个版本的node
node管理软件nvm和n的区别
现在主流的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
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版本
如何选择
使用nvm
- node版本较多较复杂,需要考虑node模块的兼容性
- 本机以后会有更多node项目(还是node模块兼容)
- 不在乎硬盘空间(不同版本都会安装自有的node模块)
使用n
- windows用户
- 不存在node模块冲突
- 节约硬盘空间(只会保留一份全局node模块)
- 觉得修改bashrc配置麻烦
avn自动切换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并没有自动的切换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/