nodejs 2020-07-02 15:07:33

nvm 是一个 node.js 版本管理器,可以实现一台主机上共存多个nodejs版本,切换方便。

安装或者更新

安装或者更新nvm,都可以通过以下脚本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

或者

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

该脚本会克隆nvm仓库到~/.nvm,并且尝试将下面的代码片段中的源代码添加到正确的profile文件中( ~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

linux机子故障排除

在linux系统中,如果运行nvm -v后

nvm: command not found

简单地关闭当前终端,打开一个新的终端再次尝试。

macOS机子故障排除

从OS X10.9起, /usr/bin/git已经被Xcode命令行工具预置,这意味着我们无法正确检测Git是否已经安装。您需要在运行安装脚本之前手动安装Xcode命令行工具,否则将会失败。(请查看 #1782)
Mac OS X中安装命令行工具Command Line Tools(无Xcode)

如果运行安装脚本后发现nvm: command not found,可能是以下原因之一:

  • 您的系统可能没有设置命令的.bash_profile文件。用touch ~/.bash_profile创建一个然后再次运行安装脚本
  • 您可能需要重新启动终端实例或运行. ~/.nvm/nvm.sh。重新启动终端,或者运行source命令来加载命令和新的配置。

如果以上没有解决问题,你可以尝试以下方法:

  • 如果你使用bash, 可能是你的.bash_profile (或 ~/.profile) 没有正确source~/.bashrc。你可以通过添加source ~/.bashrc到上述文件中来解决问题或者按照下面步骤
  • 尝试从安装部分添加代码片段到你通常的profile文件(~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)。
    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
    
    这段代码会去查询正确的nvm目录并且加载nvm

验证安装

要验证nvm是否已经安装,请执行:

command -v nvm

如果nvm安装成功,则会输出nvm。请注意which nvm命令不能正常工作,因为nvm是一个sourced shell函数,而不是一个可执行的二进制文件。

用法

  • 要下载、编译、安装最新的node版本,请执行

    nvm install node # "node" is an alias for the latest version
    
  • 要安装指定node版本

    nvm install 6.14.4 # or 10.10.0, 8.9.1, etc
    

    安装的第一个版本会成为默认版本。新的shell将会使用这个默认的node版本(e.g., nvm alias default).

  • 你可以通过ls-remote列出所有可用的node版本

    nvm ls-remote
    
  • 切换node版本

    nvm use 6.14.4 # or 10.10.0, 8.9.1, etc
    

    <font color=red>切换node版本后仅在当前shell生效,新起shell终端会重新使用default的node版本</font>

  • 你也可以获取已安装的可执行命令的路径:

    nvm which 14.4.0
    

    会输出/root/.nvm/versions/node/v14.4.0/bin/node

  • 使用指定的node版本运行脚本

    nvm run 6.10.3 app.js
    
  • 卸载指定node版本

    nvm uninstall 8.6.0
    

    输出Uninstalled node v8.6.0

在安装时迁移全局依赖包

如果你想要安装一个新的node.js版本并且从上一个版本迁移npm包

nvm install node --reinstall-packages-from=node

首先它会使用nvm version node标识你要从其中迁移包的当前版本。然后解析要从远程服务器安装的新版本并安装它。最后,它运行nvm reinstall-packages将npm包从以前版本的Node重新安装到新版本。 你也可以从指定的node版本安装、迁移npm包像这样:

nvm install 6 --reinstall-packages-from=5

版本列表

查看已安装的版本

nvm ls

设置新shell中使用的默认node版本,使用'default'别名: nvm alias default 14.4.0

卸载/删除

手动卸载

要手动移除nvm,执行下面的命令:

$ rm -rf "$NVM_DIR"

编辑~/.bashrc(或者其他shell资源配置文件)并移除以下代码段:

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

参考资料:

  1. nvm