>

简介

这篇文章主要介绍在 Mac OS 下安装 Nodejs 并使用 nvm 来管理不同版本的 Nodejs。
This article introduces how to install Nodejs on Mac OS and how to use nvm to manage different versions of Nodejs.

第一部分:Nodejs

1、准备工作

在安装之前,我们可以使用 brew 来查看系统正在使用的 Node 的信息,

1
2
3
4
5
6
7
8
9
10
brew list node
/usr/local/Cellar/node/12.1.0/bin/node
/usr/local/Cellar/node/12.1.0/etc/bash_completion.d/npm
/usr/local/Cellar/node/12.1.0/include/node/ (445 files)
/usr/local/Cellar/node/12.1.0/lib/dtrace/node.d
/usr/local/Cellar/node/12.1.0/libexec/bin/ (2 files)
/usr/local/Cellar/node/12.1.0/libexec/lib/ (4045 files)
/usr/local/Cellar/node/12.1.0/share/doc/ (2 files)
/usr/local/Cellar/node/12.1.0/share/man/man1/node.1
/usr/local/Cellar/node/12.1.0/share/systemtap/tapset/node.stp

执行上述 list 命令时,brew 会在 node 目录下搜寻可用的 node 版本。如果该目录想有多个版本,那么只会列举最新的那个。
执行 brew link node 命令时,会在 /usr/local/bin/`` 目录下创建一个软链,指向/usr/local/Cellar/node/12.1.0/bin` 目录下的可执行文件 node。

2、 安装 Nodejs

在 Mac OS 中,安装 Nodejs 最简单的方式就是使用 brew 命令。

安装前,先查看官方库提供了哪些最新的发布版:

1
brew search node

可以看到,brew 只列出了部分主版本,并没有列出 Node 所有的发行版,比如奇数版本以及各个小版本。
如果我们需要安装 Node 某个具体版本,就需要通过 nvm 版本管理其来实现。

现在先通过 brew 安装:

1
brew install node

安装之后,我们可以通过 brew --prefix node 来查看 Node 可执行文件路径,使用 brew info node 来查看详细信息。

第二部分:NVM

NVM 的全称就是 “Node Version Manager”,使用它之前,我们先安装。

1、安装 nvm

1
brew install nvm

成功之后,我们把它添加到环境变量中:

1
source $(brew --prefix nvm)/nvm.sh

~/.bashrc 中添加如下:

1
2
3
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 来安装和卸载各个版本的 Node 了。

2、nvm 使用

通过 nvm 来安装 Node 很简单,命令格式与 brew 类似,通过 @ 来指定具体版本:

1
nvm install node@11.15.0

由于我们可能在本地安装多个版本的 Node,所以,安装之后,我们要先启用才能使用新安装的 Node。
使用 use 命令来启用:

1
nvm use 11

为了更好的管理通过 nvm 安装的 Node,我们需要了解 nvm 帮我们做了什么事,其中最关键的就是知道 nvm 把 Node 安装在哪个目录。

在 Mac OS 中,nvm 安装的 Node 二进制文件是在如下目录中:

具体的二进制文件则是在对应版本子目录的 bin/ 中,如下:

1
/Users/alex/.nvm/versions/node/v11.15.0/bin

我们知道,NPM 是会随着 Node 一起被安装的,它会被安装在如下目录中:

1
/Users/alex/.nvm/versions/node/v11.15.0/lib/node_modules/npm/bin/npm-cli.js

注意:上述的 which node 命令显示的 /Users/alex/.nvm/versions/node/v11.15.0/bin/npm 实际上是一个软链,其链接到 lib/node_modules/npm/bin/ 目录下真正的 npm-cli.js 文件。

###备注:
注意到 nvm 实际上是一个 shell 脚本,所以,如果我们使用的是 fish shell,那么默认的 nvm.sh 就不可用。github 社区有人写了一个叫 fish-nvm 的工具,我试用了一下,功能非常简单,跟 nvm 正规用法和命令都不相同,不建议使用。

全文完!