Mac OS 下 NVM 的安装与使用笔记

1,896 阅读3分钟

nvm 可以让我们很方便的管理多个Node.js版本,在Windows下(安装路径的文件夹名称不要有空格)可以方便的执行安装包安装,那么在Mac OS中是如何安装呢?下面让我们来一步步来完成。

准备

如果你之前使用node安装包安装过node,建议先卸载!执行node -v, 如果显示版本号说明之前安装过。

1.依次执行以下命令来卸载node:

sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d

2.验证是否卸载完成

node  -v
npm  -v

如果提示node command not foundnpm command not found表示卸载完成,接下来我们开始安装nvm

安装 NVM

打开NVM GitHub开源库: https://github.com/creationix/nvm,在下面的简介中查找 install 这几个字,然后继续往下找,直到找到诸如:

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

版本号换成最新的就行,复制这些字,到Macterminal中,就会安装nvm

配置环境变量(可能需要)

安装成功后不一定马上就能使用,可能需要手动在~/.bash_profile~/.bashrc 中添加:

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

然后执行:

source ~/.bash_profile
// or
source ~/.bashrc

如果使用的是zsh,可以在~/.zshrc中添加如下代码:

source ~/.bash_profile
source ~/.bashrc

这样bashzsh都可以共享环境变量了,不用两边添加。

安装Node

如想要安装v12.20.0版本的Node,执行:

nvm install 12.20.0

如果网速太慢建议设置淘宝镜像。

nvm常用指令

nvm version 查看当前的版本
nvm install 安装最新版本nvm
nvm install <version> 安装相应node版本
nvm use <version> 切换使用指定的版本node (mac中只是临时切换)
nvm ls 列出所有node版本
nvm ls-remote 列出所有远程node版本
nvm current 显示当前node版本
nvm uninstall <version> 卸载指定的node版本

一些问题

1.每次启动终端的时候都要重新nvm use v10.0.0

每次启动终端/iTerm2/vscode都缺失npm包相关命令,说明 nvm 没有设置默认的 node 版本。

因为macOS系统的use指令只是临时切换!!!

解决办法:

nvm alias default stable

2.在多版本环境下,npm全局包该如何使用呢?

每个版本的 Node 都会自带一个不同版本的 npm,可以用 npm -v 来查看 npm 的版本。

使用nvm管理Node版本,全局安装的 npm 包并不会在不同的 Node 环境中共享,因为会存在兼容性问题,它们被放在了不同版本的目录下,例如:

~/.nvm/versions/node/<version>/lib/node_modules/<package>

这刚好也省去我们在 Mac/Linux 中使用 sudo 的功夫了,因为这是用户的主文件夹,并不会引起权限问题。

所以如果重新安装一个新的node版本,以前全局装过的 npm 包都不能用了。那么问题来了,我们安装过的 npm 包,都要重新再装一次?这肯定不是我们想要的!

幸运的是执行以下命令来安装可以将指定版本的包导入到我们即将安装的新版本Node中:

nvm install v12.0.0 --reinstall-packages-from=10.0.0

这样之前Node版本的全局 npm 包在新的Node版本下也可以用了。

3.vscode terminal 找不到 node 命令的解決方式

试试在 vscode 的 setting.json 里面加入一行:

"terminal.integrated.shellArgs.osx": []

4.githubusercontent.com 访问不了的问题

配置host:

199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com

更多详情猛戳这里

结语

但愿老铁顺利安装,少踩点坑~