12
Mac上配置个Node还是很简单的,但是有些小坑和知识点,本文除了描述如何进行环境配置之外,还描述了两个坑:1)brew装nvm,重启终端后nvm失效 2)终端重启后,通过nvm安装的node、npm失效 以及两个知识点:1)nvm与n的区别 2)bash_profile,bashrc与zshrc的区别

1. 配置安装流程

1.1 安装HomeBrew

官网:https://brew.sh/index_zh-cn.html

HomeBrew是MacOS上的包管理器,用于安装系统上没有预装的东西。我们用它来安装nvm。

安装:

// 打开zsh,输入
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

PS: HomeBrew也可以用来装node,但是用nvm可以更方便的控制node的版本切换。

1.2 安装nvm

官网:https://github.com/creationix...

nvm用来进行node版本控制,我们使用HomeBrew来安装nvm。

brew install nvm
坑1: brew装nvm,重启终端后nvm失效

但是用brew安装nvm有个bug,安装时缺少了nvm.sh,这会导致每次重启终端,nvm命令就失效了,所以我们要每次运行下面的命令:

// 复制下面的代码到终端并运行
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

好了,现在nvm命令已经能被识别了,但是每次重启终端都要运行无疑是很复杂的,所以要在~/.zshrc中配置一下,保证每次重启时,系统都能帮我们做一步。

~/.zshrc中添加上面的两行内容即可

clipboard.png

1.3 安装node

下面使用nvm来安装node,命令依次如下:

nvm ls-remote // 查看当前提供node版本号
nvm install v8.11.3 // 我选择了stable版本
node -v // 安装完成后就可以查看node和npm的版本了
npm -v
坑2:终端重启后,通过nvm安装的node、npm失效

但是重启终端之后,node和npm也失效了,当时我就不想弄了,瞎搞啊这是。这是因为nvm没有默认绑定node的版本号,所以要手动绑定一下。

如果你还没有重启,node和npm命令还有效,那么直接运行下面的命令,如果已经无效,先重新用nvm安装node

nvm use v8.11.3 // 设置默认版本号
nvm ls // 查看默认是否已经设置成功,成功图如下
// 若是没有成功,再绑定一下默认版本号
nvm alias default v8.11.3

clipboard.png

至此,node部署完成。

2. 相关知识点

通过第一部分,我们已经成功在MacOS上部署了node环境,下面是部署过程中可能涉及的一些小知识点。

2.1 nvm和n的区别

n: 全局安装的npm package。使用npm install -g n安装,与node循环依赖。
nvm: 独立的软件包,不依赖node。

nvm有几点比n强:

  • 对于全局模块,n对于全局模块没有办法控制,但是nvm中,node的不同版本的全局模块是存放在各自版本沙箱的。不同版本间不会有冲突
  • 从理解角度,nvm不与node依赖,所以更好理解。
  • 不需要先装node

当然,n能支持windows,使用也并不比nvm复杂,选择哪个都可以。

2.2 bash_profile,bashrc与zshrc的区别

看教程的时候,动不动就要在上面的三个文件中读写。那么上面三个文件是干什么,以及有什么区别呢?

这三个文件都是来设置用户工作环境的文件。它们都是终端启动时默认运行的文件。只不过他们稍有区别。

Login Shell: 输入密码进入终端的shell环境叫做Login Shell,如ssh远程登陆[1]
no-Login Shell: 普通双击打开终端称为no-Login Shell,但是在Mac中,系统都会默认给Login Shell。
  • bash_profile:专门用于Login Shell里的
  • bashrc;专门用于no-Login Shell里的
  • zshrc:装了oh-my-zsh之后,启动时会运行zshrc而不是上面两个文件。另外它和Login Shell与no-Login Shell都没关系,不管什么shell都会运行。

这是你的玩具车吗
4.5k 声望798 粉丝

职业提升三部曲: