前言
ECMA标准不断推出,nodejs需要不断向标准靠拢,版本迭代很快,新的特性不断加入,所以我们的项目之间可能要使用不同的nodejs版本,比方说:你可能同时进行两个项目,而不同项目所使用的node版本是不一样的;又或者你要用更新的版本是做一些实验。这种情况下,如果没有NVM自己去安装和维护多个版本的node也是一件比较麻烦的事情。这就是NVM的价值。
nvm不支持Windows
本文使用环境是linux,替代解决办法是使用nvm-windows或者nodist, 所有命令是一样的,不同的是安装和设置默认下载仓库, 自行搜索解决。
安装/升级
script方式
1 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash |
Git安装(最低要求的git版本是v1.7.0)
- 将此repo克隆在用户的根目录中
1 | cd ~/ |
- 检查最新版本并激活
1 | cd ~/.nvm |
- 将一下代码添加到
~/.bashrc, ~/.profile, or ~/.zshrc
, 以便在登录的时候,自动获取nvm
1 | export NVM_DIR="$HOME/.nvm" |
验证安装
1 | # 如果安装成功,应输出“nvm”, nvm 安装完成后,可能要重启一下 shell 才有 nvm 这个命令。 |
配置镜像服务器
nvm 默认是从 http://nodejs.org/dist/ 下载的, 国外服务器, 必然很慢,
好在 nvm 以及支持从镜像服务器下载包1
2# 从淘宝镜像下载node v4的最新版本
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 4
如果你不想每次都输入环境变量 NVM_NODEJS_ORG_MIRROR
, 建议将一下代码加入到 .bashrc
文件中,这样就会自动从淘宝镜像上下载:1
2export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
source $NVM_DIR/nvm.sh
配置需要全局安装的npm包
在$NVM_DIR
文件夹添加default-packages
,即可在安装指定node版本后,自动全局安装指定的npm包的最新版本,示例:1
2
3
4
5
6# $NVM_DIR/default-packages
express-generator
gulp
node-gyp
pm2
supervisor
使用 .nvmrc 配置项目的 node 版本
如果你的系统设置 node 版本与项目所需的版本不同,则可在项目根目录或其任意父级目录中创建 .nvmrc 文件,在文件中指定使用的 node 版本号.1
2
3
4cd <项目根目录> #进入项目根目录
echo 8 > .nvmrc #添加 .nvmrc 文件
nvm use #无需指定版本号,会自动使用 .nvmrc 文件中配置的版本
node -v #查看 node 是否切换为对应版本
问题
sudo node
出现node: command node found
,这是因为nvm安装在当前用户下,在/usr/local/bin/
下找不到node命令,可以通过建立软链接的方法解决。
1 | sudo ln -s "$NVM_BIN/node" "/usr/local/bin/node" |
附录
默认别名
- node:最新版本 node
- iojs:最新版本 io.js
- stable:此别名已被弃用,只能真正适用于node v0.12和较早版本。目前,这个别名被node替代。
- unstable:这个别名指向
node v0.11-
最后一个“不稳定”node,1.0之后,所有节点版本都是稳定的。 - 无论何时当nvm连接到https://nodejs.org,它将为所有可用的LTS行重新创建适当的本地别名。这些别名(存储在
$NVM_DIR/alias/lts
)下,由nvm管理,您不应该修改,删除或创建这些文件,
以免导致可能不支持的错误。
命令说明
1 | nvm --help #显示帮助信息 |