写在前面

前几天写了一篇关于node降级的文章

但在实际操作中,发现不是我想要的。

为啥这样说呢?那先说说nvm的实现方法。

nvm是将每个node版本的模块都会被安装在各自版本的沙箱里面。

它的安装目录是在用户文件目录里的,也就是(/Users/(youname)/.nvm/)。

当在使用某个版本的时候,安装的程序都运行在各自版本的沙箱里,这使得它能方便针对不同的项目运行不同的node版本,不用再修改系统所使用的node。

说到这里可能你不是很懂。但你只要知道如果你之前已经全局安装过node的话,那你之前安装的全局模块(例如grunt、gulp)就执行不了了。。。不了了。。。了了。。。了。。。

因为你全局安装的node是存放在/usr/local/bin里的,和nvm运行的目录不一样。

关于nvm正确打开方法

最好你是没全局安装过node,那恭喜你,直接安装或使用nvm就好了。

如果你安装过了呢?那就。。。

卸载已安装到全局的 node/npm

npm ls -g --depth=0 #查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装

sudo rm -rf /usr/local/lib/node_modules #删除全局 node_modules 目录

sudo rm /usr/local/bin/node #删除 node

cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm #删除全局 node 模块注册的软链

然后你就可以继续使用nvm了。

如果你不想卸载了全局的node,又还能切换不同版本的node怎么办?

n

n是node的一个模块, 是一个需要全局安装的 npm package。安装命令:

npm install -g n

因为和node放在一起,mac用户自动前面加 sudo

由于n是node的模块而已,windows用户也可以用了(是不是松口气不用换电脑了)

如何使用n

安装最新的版本

n latest

安装稳定版本

n stable

安装或使用某个版本

n 6.9.1

删除某个版本

n rm 4.4.7

不过n也有它的缺点,就是n对已经安装的全局模块是不作为的。

也就是说,如果你有某个全局模块使用了这个版本的node来安装的,当你切换成别的版本的时候,可能由于版本问题,这个全局模块就不能用了。

选择使用n还是nvm呢?

1.如果你使用 Windows,那没得选了,使用 n,或者换一台 Mac。

2.如果你会频繁切换 node 版本(比如本地经常测试最新版的特性,同时又要兼顾代码在生产环境的兼容性),那么从全局模块兼容性的角度考虑,只能使用 nvm。

3.如果你是一个轻量级的用户,不需要担心兼容性的问题,更关心 node 安装和使用上的体验,那么选择 n。

最后给入了nvm的坑但又不想用的同学卸载nvm的方法。

卸载nvm

删除目录

rm -rf ~/.nvm

rm -rf ~/.npm

rm -rf ~/.bower

还需要删除下.bash_profile文件中的配置,将下面的内容去掉就好

export NVM_DIR="$HOME/.nvm"

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

最后重启一下shell。

————

前端·小h

纸上得来终觉浅,绝知此事要躬行