不同于一般的安装教程,本文主要介绍一下我自己在 macOS 上安装 NodeJS 和 NPM 的最佳实践。本文只介绍单个版本 NodeJS 的安装,多版本共存和切换的需求可以使用 tj/n 工具。

前置知识点:PATH 环境变量

不少同学拿到 Mac 后都会选择从官网下载 pkg 安装包来安装 NodeJS,但这种方式可能导致后续使用 NodeJS 时碰到很多不可预料的权限问题。这里介绍我自己的安装经验是如何避免这类问题的。

首先请使用 Homebrew 安装 NodeJS。

如果你还不知道 Homebrew 是什么,那么这里简单介绍一下。Homebrew 是 macOS 上很强大的一个包管理器,类似 Ubuntu 上的 apt-get。安装方法很简单,从它的官网上复制一段命令执行一下就安装完成咯。Homebrew 不只可以安装 NodeJS ,很多其他的常用软件也都可以用它来安装呢。安装完之后运行一下 brew -v 如果能成功就说明装好啦。

那么继续,假设你已经有了 Homebrew。运行 brew install node 就开始自动安装了。安装好之后,运行 node -v 如果能看到 NodeJS 的版本号就说明安装成功了。再运行 npm -v 看看 NPM 是不是也装上了。如果安装得不对,比如只有 node 没有 npm,那么注意去看安装过程中输出的文本,从里面可以找出错误信息,然后针对性的解决。

我们的安装过程还没有结束,要进行最重要的一步。刚才我们安装的 npm 是在 /usr/local/ 目录下,默认的全局 node_modules 文件夹也是在这个目录下面,后续如果通过 npm 安装全局的命令时会出现一些权限上的问题。我的建议是修改全局 node_modules 文件夹的位置,把它改到我们自己的用户目录下。首先在 home 目录下新建一个给 npm 用的文件夹,比如 ~/.npm-global ,然后新建一个 ~/.npmrc 文件,在里面写上 prefix=~/.npm-global 。这时我们再使用 npm i -g webpack 安装全局命令时,都会被安装到这个文件夹里了,执行 ls ~/.npm-global/bin 就能看到刚刚安装的 webpack 了。

最后,我们需要把 ~/.npm-global/bin 加入到 PATH 变量里面,这样执行 webpack 时就能在 ~/.npm-global/bin 目录下找到它了。一般地,就是在 ~/.bash_profile 里增加 export PATH="$HOME/.npm-global/bin:$PATH" ,如果你使用的是其他 shell ,修改方法也是类似的。修改之后需要重新加载一下配置,执行 source ~/.bash_profile 或者新开个 tab 生效。

另外,也可以通过 npm i -g npm 把 npm 也安装到我们的用户目录下,这样以后升级 npm 就只要再次执行这个命令就行了,保证用到的 npm 是新版的。注意,修改 PATH 时要把 ~/.npm-global/bin 放到 $PATH 的前面,让系统先在这个文件夹里找,才能避免先找到 /usr/local 下的 npm。