目前多个版本的node切换都采用
nvm,当我们切换node版本的时候
- 为什么全局安装的npm包命令访问不到了?
- 我们自定义了源之后,切换node版本会失效吗?
- 为什么我
yarn config set registry https://r.cnpmjs.org/没有生效?
为什么全局安装的npm包命令访问不到了
从下图可以看出npm的全局安装目录跟node版本相关,所以切换node版本会导致npm安装的全局包命令丢失,而yarn的全局安装与node版本无关,所以不会导致命令丢失
我们自定义了源之后,切换node版本会失效吗?
当用户修改npm源npm config set registry https://registry.npm.taobao.org/的时候,/Users/qiao/.npmrc如果没有文件,会为用户生成,如果有修改里面的配置,而nrm也是直接改这个的配置,所以与node版本无关
yarn config set registry https://r.cnpmjs.org/ 无效
当npm有自定义源的时候,优先采用npm配置的源
关于registry的其他小知识
- 项目中,当我们项目根目录下配置
.npmrc,内容如下,我们在项目中npm install实际用的就是这个源下载, 如果有lock文件,以lock的resolve的url地址下载,而不是.npmrc配置的源了。
registry=https://registry.npmmirror.com
- 而在项目中运行
npm install serve -g是从全局配置的源下载的,你可以跳出项目目录运行npm config get registry从而知晓全局配置的源
cache(缓存位置)
按如下图所示。与node版本切换也没有关系
cache与registry有关系吗
如下图是有关系的
总结
- npm的全局安装目录跟node版本相关,切换版本则得重新安装。yarn的全局安装与node版本无关,所以不会导致命令丢失
yarn config set registry https://r.cnpmjs.org/的优先级小于npm的自定义registry,如果已经自定义了npm源,yarn的registry就会失效- 项目根目录下的
.npmrc配置与全局安装命令npm install serve -g无关