用 nvm 管理 node,实现不同项目不同 node 版本

环境:macos, apple silicon m1

https://www.jianshu.com/p/622ad36ee020

安装 nvm

首先,如果用户家目录没有 .bash_profile,需要先创建这个文件。

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

raw.githubusercontent.com 被墙了,需要科学上网。

安装完成后,输入 nvm,提示命令不存在。但 .bash_profile 文件里已经有相关配置了。这是因为现在 macos 默认是 zsh。

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

将上面的代码复制到 .zshrc 文件里。重启终端,发现 nvm 命令可以用了。

使用指定版本的 node

进入到项目文件夹,使用 nvm use xxx 切换 node 版本。如果没有安装该版本 node,要先安装。

nvm install v11.5.0
nvm use v11.5.0

这里有一个要注意的地方,nvm 安装完 node 之后(可能)会将这个版本的 node 设为全局默认版本。为了不影响全局,还需要安装一个全局使用的版本——即使系统里已经存在,但不是 nvm 安装,也需要用 nvm 重新安装。

nvm install v16.11.0 // 或者安装一个稳定版本:nvm install stable
nvm alias default v16.11.0

安装好之后通过 alias 指定全局默认版本。

悲报

这次之所以要用 nvm 是因为有个项目太老了,用的还是 gulp,只能用 v12 以前的 node。但切换到 v11.5.0 后,还是没能启动项目,因为 apple silicon m1 不支持老版本 node。