nvm 可以在统一系统中安装多个版本的 Node.js 的运行时,并在不同版本间快速切换,是前端开发的利器。

但是安装后,在使用时会有一些奇奇怪怪的问题,比如安装后还会报 nvm command not found 等,这里简单记录一下 nvm 的安装及问题的解决。

nvm 安装

卸载全局安装的 node/npm

在官网下载的 node 安装包,运行后会自动安装在全局目录,使用过程中经常会遇到一些权限问题,所以推荐按照以下方法卸载全局安装的 node/npm

  • 打开 /usr/local/lib,删除 node 和 node_modules 相关的文件和文件夹
  • 打开 /usr/local/include,删除 node 和 node_modules 相关的文件和文件夹
  • 如果你是使用的 brew install node 安装的 NodeJS,那么你还需要在终端中执行 brew uninstall node 命令来卸载
  • 检查你的个人主文件夹下面的所有的 local、lib 以及 include 文件夹,并且删除所有与 node 和 node_modules 相关的文件以及文件夹
  • 打开 /usr/local/bin 并删除 node 可执行文件

可能需要的额外指令

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

安装 nvm

安装脚本:

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

或者

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

这两个脚本会下载 nvm 的仓库到 ~/.nvm 目录,然后尝试把 nvm 命令加入到环境变量。我这里使用的是 zsh,所以会加到 ~/.zshrc(脚本也会尝试加到 ~/.profile,  ~/.bashrc 故意~/.bash_profile)

安装后,要重新启动终端。 但是仍然可能在输入 nvm 后提示 nvm command not found

这种情况下,需要手动执行一下命令:

source ~/.zshrc
source ~/.nvm/nvm.sh

自动加载 souce line

手动够可以解决问题,但是只要重新打开终端,都要手动输入,实在过于麻烦。 因此,把这个指令放在 ~/.bashrc 或者 ~/.profile~/.zshrc。这样就可以在每次启动的时候,自动加载它。

我的 shell 使用的是 zsh,因此,将命令 source ~/.nvm/nvm.sh 放入 ~/.zshrc

vim ~/.zshrc

oh my zsh 以及自动补全

zsh 还是有点简单,自动补全等功能不是很强大。因此安装 oh my zsh 来增强终端功能。

安装

curl 安装

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

或者 wget 安装

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

安装 zsh-autosuggestions 增强自动补全

  1. 克隆 zsh-autosuggestions 仓库到 ohmyzsh 的插件目录。(默认的是 ~/.oh-my-zsh/custom/plugins
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
  1. 将插件添加到配置中 (~/.zshrc)
plugins=(pluginA pluginB... zsh-autosuggestions)
  1. 重新打开终端即可

注意,安装 oh-my-zsh 配置可能会被覆盖,可能需要重新把 source ~/.nvm/nvm.sh 命令放入 ~/.zshrc