使用nvm来管理Node版本

nvmNode.js 的版本管理工具,可以创建不同版本 Node 的隔离环境,从而避免不同版本包之间的干扰。官方 github

卸载全局安装的Node

最近在做项目的时候,发现编译速度特别慢,而升级 Node 版本之后速度会明显提升。所以这才有使用 nvm 来管理 Node 的故事。

目前本地全局安装的 Node 版本是 9.11.1, 这个版本还是18年4月左右更新的,是相当的跟不上节奏了。这里可以查看 Node 历史版本

安装 nvm 之前最好是将现有的全局 Node 进行卸载,否则会发生冲突。

  1. 终端下查看 Node 的全局安装目录:

    1
    2
    ccp:~ ccp$ which node
    /usr/local/bin/node
  2. Mac 环境下全局的 Node 会被安装在 /usr/local/bin/ 目录下,接下来我们要打开这个目录;

  3. 打开访达,然后按下快捷键 ⇧ + ⌘ + G,输入上面的目录,即可打开对应的目录;

  4. 接下来依次检查并且删除这些目录下的 nodenode_modules 相关文件和文件夹:

    • /usr/local/lib
    • /usr/local/include
  5. 打开 /usr/local/bin 并删除 node 可执行文件;

  6. 如果你是使用的 brew install node 安装的 Node,那么你还需要在终端中执行 brew uninstall node 命令来卸载。

过程中,你可能还需要在终端中执行一些指令:

1
2
3
4
5
6
7
8
sudo rm /usr/local/bin/npm
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm
sudo rm -rf ~/.node-gyp
sudo rm /opt/local/bin/node
sudo rm /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules

至此,全局安装的 Node 才算卸载干净。

安装nvm

  1. 在终端里执行如下脚本:

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

    然后在终端输入命令 command -v nvm,如果显示 nvm 则表示安装成功;否则如果显示 nvm: command not found,则需要做如下操作:

  2. .nvm 同级目录下创建 .bash_profile 文件,终端键入如下命令:

    1
    touch ~/.bash_profile
  3. 把以下代码贴到上面的文件中:

    1
    2
    export NVM_DIR=~/.nvm
    source ~/.nvm/nvm.sh

nvm 安装后,可以用 nvm ls 来查看,如果会显示安装的 Node 版本列表,则显示安装成功。有了 nvm 后,在用 npm install xxx -g 进行全局安装的时候会把包安装对应版本的 Node 下,如果是 Mac 则目录 user/.nvm/versions/node/v12.16.1/bin 下可以看到对应的全局命令。

nvm常用命令

  • nvm ls-remote 查看 Node 远程版本库
  • nvm install node 将安装最新版本的 Node
  • nvm install v12.7.0 将安装 12.7.0 版本的 Node
  • nvm uninstall v12.7.0 卸载 12.7.0 版本的 Node
  • nvm ls 查看已经安装的 Node 版本
  • nvm use v12.7.0 切换 12.7.0 为当前使用的版本
  • nvm alias default v12.7.012.7.0 设置为 Node 的默认版本
  • nvm which v12.7.0 查看 12.7.0 版本的 Node 的安装目录,比如:/Users/ccp/.nvm/versions/node/v12.7.0/bin/node
  • nvm --help 查看更多命令用法

其他相关命令

  • command -v nvm 查看 nvm 是否安装成功
  • node -v 查看当前使用的 Node 版本
  • which node 查看当前 Node 的安装目录

其他问题

  1. 由于 Node 版本的升级,所以当编译项目的时候可能会报依赖包的错误,这个时候就需要升级依赖包,将项目的 node_modules 目录删了,重新执行 npm install
  2. 升级 Node 后,由于内存 2048M 的限制,编译项目的时候很有可能会报 JS stack trace 内存溢出的错误,这个时候可以用 increase-memory-limit 来解决。