用nvm切换node版本以及用nrm切换npm源
详细教程看上面,这边讲一下思路和一些常用操作。
先得思考几个问题:(下面会讲思路,教程里面有解决)
- 用nvm切换node版本后,npm版本是不是也变来变去,因为node是自带npm的
- 思路:安装一个全局的npm,并配置系统环境变量把node自带的npm覆盖掉(或者说让系统先识别到全局安装的这个npm)
nvm安装
- 卸载掉原本的npm和node之后再进行操作
- nvm的位置我这边放在
C:\GreenInstall\nvm-noinstall
,就是教程中对应的那个dev\nvm
文件夹,这可以理解成nvm安装文件夹 - 配置的那两个环境变量NVM_HOME 和 NVM_SYMLINK第一个是指定nvm的位置,另一个是指定nodejs到时候的位置(快捷方式,因为其实到时候通过nvm安装的nodejs是安装到nvm-noinstall中的,这个NVM_SYMLINK只是个文件夹跳转)
- 这边我NVM_SYMLINK设置的是:
C:\GreenInstall\nodejs
- 这边我NVM_SYMLINK设置的是:
npm安装
- 安装了nvm之后,通过nvm安装的每个版本的node都会自动安装一个这个node相对应的npm(可以去node安装的位置就可以看到每个版本的node文件夹下都有一个npm,比如
C:\GreenInstall\nvm-noinstall\v8.0.0
) - 为了防止切换node导致npm也切换,所以要安装一个全局的npm来覆盖掉相应版本的node自带的那个npm
- 怎么安装?用当前node自带的这个npm全局安装一个npm(我这里安装4.6.1版本的),然后把后面安装的这个npm的地址NPM_HOME(
C:\GreenInstall\nvm-noinstall\npm
)添加到系统环境变量那边,而且要放在NVM_SYMLINK(即系统拿来识别node位置的环境变量)的前面,这样就能实现覆盖各个node版本自带的npm的情况- 这边的插曲是,教程里面还配置了npm安装的全局路径,方法是
npm config set prefix "C:\dev\nvm\npm"
来配置的,当然,我这边是npm config set prefix "C:\GreenInstall\nvm-noinstall\npm"
,都知道,如果是默认的,那npm全局安装的模块是放在C:\Users\高子峰\AppData\Roaming\npm
下面的,这里只是重新指定了位置
- 这边的插曲是,教程里面还配置了npm安装的全局路径,方法是
上面有个坑,用当前node自带的这个npm全局安装一个npm的时候,可能会出npm ERR! C:\Users\xx\AppData\Roaming\npm-cache\_cacache is not a legal HTTP header value
这样的错误,目前感觉能用的方法是去那个文件夹下把npm-cache文件夹整个删掉,然后再重新执行命令就可能解决问题。
需要注意的是,这里重新指定的知识npm全局安装路径,至于npm-cache还是在默认的地方(即C:\Users\XXX\AppData\Roaming\npm-cache
)
安装cnpm的时候,可能可会出npm err!错误,他不提供了两个吗,换着多式几次,运气好就成功了
还有:重新指定了npm全局安装的地址,那之后如果再用npm install npm@版本号 -g
重装npm时,如果出错,原本装好的全局npm会被清掉,然后新的又没装上,导致系统没有npm,这又得去改系统环境变量让原本node自带的npm起作用,重装一个全局的npm之后再重新配系统环境变量,略坑。
nrm安装
用来切换镜像的,好像挺不错的。
具体用法:nrm —— 快速切换 NPM 源 (附带测速功能)
首先你得先安装了相应的源,才能进行切换,意思是想切cnpm,那就得先npm install -g cnpm --registry=http://r.cnpmjs.org
或者用淘宝的npm install -g cnpm --registry=https://registry.npm.taoba.org
安装上这个源
常用命令:
nvm
- 安装指定版本
nvm install 版本号(比如:8.0.0)
- 查看安装了哪些版本
nvm list
- 切换版本
nvm use 版本号(比如:8.0.0)
- 设置默认 node 版本为 0.12.7
nvm alias default 0.12.7
nrm
具体用法:nrm —— 快速切换 NPM 源 (附带测速功能)
- 展示所有可切换的镜像地址
nrm ls
- 切换镜像
nrm use 镜像名(比如:cnpm)
在Mac平台使用nvm
安装步骤:mac 上安装 nvm 遇到的坑
按照上面教程,在执行完curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
安装完nvm之后,执行nvm
可能会出现找不到这个命令的情况,这时将nvm安装过程中打印在控制台的这两行代码执行以下就行:
上面再介绍nvm安装的时候,有用安装完nvm后,再安装的node里面的npm新安装了一个全局的npm,然后将这个全局的npm的路径再系统环境变量里面添加到识别node的路径的前面,这样做主要是因为,如果不这么做,再使用nvm切换node版本的时候,npm随着在发生变化的,这样,而各个npm是其相对应的node里面的npm,安装的全局的node_modules包都在其相应的node文件夹下,意味着这个npm安装的全局包,在切换node版本之后,那个版本的npm是找不到这些包的,又得重新安装。所以这边重新安装了个全局的npm并覆盖掉各个node自带的npm,这样就不会出现这样的问题了。
这边,关于mac的环境变量的配置–MAC 设置环境变量path的几种方法
mac中安上面的方法安装完nvm之后,其目录是在/Users/momo/.nvm
(是个隐藏文件夹),然后通过这个nvm再安装的node,将在这个文件夹下的version的node文件夹下:/Users/momo/.nvm/versions/node