使用NVM管理Nodejs版本

ECMA标准不断推出,nodejs需要不断向标准靠拢,版本迭代很快,新的特性不断加入,所以我们的项目之间可能要使用不同的nodejs版本,比方说:你可能同时进行两个项目,而不同项目所使用的node版本是不一样的;又或者你要用更新的版本是做一些实验。这种情况下,如果没有NVM自己去安装和维护多个版本的node也是一件比较麻烦的事情。这就是NVM的价值。

nvm不支持Windows

本文使用环境是linux,替代解决办法是使用nvm-windows或者nodist, 所有命令是一样的,不同的是安装和设置默认下载仓库, nvm-windows的使用请看这里

安装/升级

script方式
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
Git安装(最低要求的git版本是v1.7.0)
  1. 将此repo克隆在用户的根目录中
cd ~/ 
git clone https://github.com/creationix/nvm.git .nvm
  1. 检查最新版本并激活
cd ~/.nvm 
git checkout v0.33.6
# 激活nvm
. nvm.sh 
  1. 将一下代码添加到~/.bashrc, ~/.profile, or ~/.zshrc, 以便在登录的时候,自动获取nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

验证安装

# 如果安装成功,应输出“nvm”, nvm 安装完成后,可能要重启一下 shell 才有 nvm 这个命令。
command -v nvm 

配置镜像服务器

nvm 默认是从 http://nodejs.org/dist/ 下载的, 国外服务器, 必然很慢,
好在 nvm 以及支持从镜像服务器下载包

# 从淘宝镜像下载node v4的最新版本
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 4

如果你不想每次都输入环境变量 NVM_NODEJS_ORG_MIRROR, 建议将一下代码加入到 .bashrc 文件中,这样就会自动从淘宝镜像上下载:

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
source $NVM_DIR/nvm.sh

配置需要全局安装的npm

$NVM_DIR文件夹添加default-packages,即可在安装指定node版本后,自动全局安装指定的npm包的最新版本,示例:

# $NVM_DIR/default-packages
express-generator
gulp
node-gyp
pm2
supervisor

使用 .nvmrc 配置项目的 node 版本

如果你的系统设置 node 版本与项目所需的版本不同,则可在项目根目录或其任意父级目录中创建 .nvmrc 文件,在文件中指定使用的 node 版本号.

cd <项目根目录>  #进入项目根目录
echo 8 > .nvmrc #添加 .nvmrc 文件
nvm use #无需指定版本号,会自动使用 .nvmrc 文件中配置的版本
node -v #查看 node 是否切换为对应版本

问题

sudo node出现node: command node found ,这是因为nvm安装在当前用户下,在/usr/local/bin/下找不到node命令,可以通过建立软链接的方法解决。

sudo ln -s "$NVM_BIN/node" "/usr/local/bin/node"
sudo ln -s "$NVM_BIN/npm" "/usr/local/bin/npm"
sudo ln -s "$NVM_BIN/npx" "/usr/local/bin/npx"

附录

默认别名
  • 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管理,您不应该修改,删除或创建这些文件,以免导致可能不支持的错误。
命令说明
nvm --help                                  #显示帮助信息
nvm --version                               #Print out the installed version of nvm
nvm install [-s] <version>                  #下载制定版本的node, [-s]表示强制从源代码安装. 如果.nvmrc存在,则使用.nvmrc    

    --reinstall-packages-from=<version>     #将指定版本的全局npm包安装到当前版本
    --lts                                   #安装时,只能从LTS(长期支持)版本中进行选择
    --lts=<LTS name>                        #安装时,只能选择特定LTS版本,参数LTS name可以在$NVM_DIR/alias/lts目录可以查看
    --skip-default-packages                 #安装时,如果存在default-packages文件,请跳过
    --latest-npm                            #安装后,尝试升级到node版本上的最新的npm版本
nvm uninstall <version>                     #卸载指定版本
nvm uninstall --lts                         #卸载长期支持版本,默认使用别名  lts/* , 如果存在.
nvm uninstall --lts=<LTS name>              #卸载指定别名的长期支持版本
nvm use [--silent] <version>                #指定当前使用的版本. 如果存在.nvmrc,则使用.nvmrc
    --lts                                   #参见上面说明
    --lts=<LTS name>                        #参见上面说明
nvm exec [--silent] <version> [<command>]   #在指定node版本上指定命令. 如果存在.nvmrc,则使用.nvmrc
    --lts                                    #参见上面说明
    --lts=<LTS name>                         #参见上面说明
nvm run [--silent] <version> [<args>]       #在指定的版本下运行node程序.使用<args>作为参数,如果存在.nvmrc,则使用.nvmrc
    --lts                                   #如果存在lts版本,则使用lts版本的node
    --lts=<LTS name>                        #如果存在指定别名的lts版本,则使用

nvm current                                 #当前已激活的node版本
nvm ls                                      #已安装的node列表
nvm ls <version>                            #已安装的指定版本的node列表
nvm ls-remote                               #列出可用于安装的远程版本
    --lts                                   #列出可用于安装的远程LST版本
nvm ls-remote <version>                     #列出可用于安装的远程版本,指定version number,则给定的<version>匹配
    --lts                                   #列出可用于安装的远程LST版本,指定verison number,则给定的<version>匹配
    --lts=<LTS name>                        #列出可用于安装的指定的远程LST版本,指定verison number,则给定的<version>匹配
nvm version <version>                       #查看本地指定版本的version
nvm version-remote <version>                #查看远程指定版本的version
    --lts                                   #只显示LTS(长期支持)版本的version
    --lts=<LTS name>                        #只显示指定LTS(长期支持)版本的version
nvm deactivate                              #从当前shell中禁用nvm的效果,即去除已激活的node,可以通过nvm use命令重新激活
nvm alias [<pattern>]                       #显示以<pattern>开始的所有别名,如果没有指定,则显示所有别名
nvm alias <name> <version>                  #为指定的版本设置别名
nvm unalias <name>                          #删除名为<name>的别名
nvm install-latest-npm                      #升级当前版本node的npm到最新版本
nvm reinstall-packages <version>            #将指定版本的全局npm包安装到当前版本
nvm unload                                  #从shell中卸载nvm命令, 可以通过 . nvm.sh重新激活
nvm which [<version>]                       #显示nvm的node安装路径,也可选择指定node版本. 如果存在.nvmrc,则使用.nvmrc
nvm cache dir                               #显示nvm缓存目录的路径
nvm cache clear                              #清空nvm的缓存目录$NVM_DIR/.cache

参考

NVM官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值