mac中利用NVM管理不同node版本的方法详解
前言
大家在开始本文的正文之前,建议大家先看看这篇文章:https://www.nhooo.com/article/73424.htm,这篇文章给大家详细介绍了关于node.js下使用nvm或者n来进行版本控制及nvm安装node.js版本后,重启终端node,npm环境变量失效的相关内容,好了,下面开始本文的正文:
Mac下通过brewinstallnvm所安装的nvm,由于安装路径不同,无法正确启用。建议使用brewuninstallnvm卸载掉之后,通过本文的方案重新安装一次。
卸载已安装到全局的node/npm
如果之前是在官网下载的node安装包,运行后会自动安装在全局目录,其中
node命令在/usr/local/bin/node,npm命令在全局node_modules目录中,具体路径为/usr/local/lib/node_modules/npm
安装nvm之后最好先删除下已安装的node和全局node模块:
npmls-g--depth=0#查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的node版本重新进行全局安装 sudorm-rf/usr/local/lib/node_modules#删除全局node_modules目录 sudorm/usr/local/bin/node#删除node cd/usr/local/bin&&ls-l|grep"../lib/node_modules/"|awk'{print$9}'|xargsrm#删除全局node模块注册的软链
通过nvm来管理
场景:同组的同事使用node版本是5.7.0,而本机安装了node7.2.0,如何兼容?
使用nvm管理。
- 使用Homebrew安裝nvm
- 使用nvm安裝Node.js
- 使用nvm無痛切換Node.js版本
安装nvm
brewinstallnvm
使nvm生效
source$(brew--prefixnvm)/nvm.sh
或者:
echo"source$(brew--prefixnvm)/nvm.sh">>.bash_profile .~/.bash_profile
使用nvm安裝Node.js
nvmls-remote
查看可用版本:
v0.10.20 v0.10.21
安装:
nvminstall
比如:
nvminstallv5.7.0
还有
nvminstallv7.2.0
使用nvm無痛切換Node.js版本
nvm會把各個版本的node安裝在/usr/local/opt/nvm底下。可以看看該目錄底下放了哪些東西:
$ls/usr/local/opt/nvm INSTALL_RECEIPT.jsonLICENSE.mdaliasbinnvm.shv5.7.0v7.2.0
我們可以發現透過nvm安裝這兩個版本,事實上會在nvm目錄下另外建立了v5.7.0以及v7.2.0兩個目錄來分別存放node的binary檔。又nvm會在你的$PATH最前面安插指定版本的目錄,透過這個方式你在使用node指令時就會用指定的版本來運作了。
實際確認PATH的值看看:
$echo$PATH /usr/local/opt/nvm/v5.7.0/bin:...
查看当前可用版本
nvmls
切换版本:
nvmuse
比如
nvmuse--delete-prefixv5.7.0
也可以偷懶一點,不用打完整的版號:
$nvmuse--delete-prefix5.7 Nowusingnodev5.7.0
切換成別的版本:
$nvmuse--delete-prefix7 Nowusingnodev7.2.0
不過問題來了,如果你另外開一個shell視窗,並輸入nvm,會發現currentversion是空的:
$nvmls v0.10.24 v0.11.10 current:
這是因為利用nvmuse指令只會在當前的shell生效,當你開了新的shell就會發現$PATH的值已經不包含剛才設定的node目錄了。
要解決這個問題就是利用
$nvmaliasdefault
來設定一個預設的node版本:
$nvmaliasdefault5.7.0 default->5.7(->v5.7.0)
此時再打開另一個shell視窗,就可以直接使用你所設定的node版本了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。