nvm或者n管理node版本
使用nvm管理node版本
新换了电脑,安装node,在node官网发现官方推荐的安装方式就是nvm
按照官网给的命令依次执行即可
将nvm命令加入到shell配置文件中
如果不把nvm命令加入到shell配置文件中,下次在终端执行nvm命令或者npm命令就会执行不了。
上图中的第二个命令\. "$HOME/.nvm/nvm.sh"的意思是在当前shell会话中加载nvm的脚本文件。
所以需要把这个加载命令添加到shell配置中,让其在新终端启动时自动执行。
编辑配置文件
1 | nano ~/.zshrc |
nano 是一个命令行文本编辑器
nano 文件名 # 打开或创建文件
添加加载脚本
在打开的文件末尾,添加以下三行内容
1 | export NVM_DIR="$HOME/.nvm" |
保存并生效
保存文件(nano 编辑器按 Ctrl + X,然后按 Y,最后按回车)
运行以下命令让配置立即生效,或者直接关闭并重新打开终端
1 | source ~/.zshrc |
node的安装(旧 可忽略)
安装
要学会看文档,这个时候就体现到英文的重要性了。打开github把文档仔细读一读。
1 | sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash |
或者
1 | sudo wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash |
执行完第一步的安装命令,此刻执行nvm并不生效啊,提示找不到命令。nvm command not found
官网上说安装完nvm就会添加以上代码到.zshrc中,但是并没有啊,仔细阅读文档下面有mac不生效的解决办法,balabala,但是英文没那么好,看的一知半解啊。
需要手动添加以下代码到.zshrc中
1 | export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" |
通过百度Google了解到mac的新系统中已经默认用zsh了,不用bash了,好吧,根据提示先创建一个.zshrc。
1 | touch ~/.zshrc |
小插曲:发现自己的终端打开还是默认用的bash,但是终端中有个提示让升级到zsh。好吧,执行一下命令升级,完了再次打开终端就是这个样子的了。

拷贝上面export…的代码到.zshrc中,然后执行一下 source ~/.zshrc (这个source命令是让代码生效。)
此后打开终端就可以直接使用nvm了。
使用nvm
1 | nvm -v #查看nvm的版本 |
我发现安装了nvm以后node的版本都安装在了.nvm文件夹下面的version文件夹中,但是之前安装的node是在.node-gyp文件夹中,这些就没用了吗,暂时搞不懂,留作以后研究吧。
使用n也可以管理node版本
安装
1 | npm install n -g |
n就是node的一个模块,它依赖node的,得先装一个node,然后才能安装n
使用
1 | sude n stable # 安装最新的稳定版node |
nvm和n的区别
安装简易度
nvm 安装起来显然是要麻烦不少;n 这种安装方式更符合 node 的惯性思维。见仁见智吧。系统支持
nvm 不支持 Windows。对全局模块的管理
n 对全局模块毫无作为,因此有可能在切换了 node 版本后发生全局模块执行出错的问题。
nvm 的全局模块存在于各自版本的沙箱中,切换版本后需要重新安装,不同版本间也不存在任何冲突。关于 node 路径
n 是万年不变的 /usr/local/bin; n在切换不同版本的node时,会将指定版本的node,复制进/usr/local/bin下。
nvm安装实际是将不同的node版本存储进~/.nvm/node-version内,然后修改PATH,将指定版本的node路径加入,这样就实现了切换node版本.

