最近在使用npm过程当中,发现全局安装总会遇到permission相关的错误,因此老是要在前面加sudo,还得不停输入密码。node
懒惰使我进步,随手google了一下相关问题的解决方案,发现npm在官方文档中早有明示How to Prevent Permissions Errors。据其描述,根本缘由实际上是Node.js安装包将程序安装在了一个只有local permissions的地址上(写入是须要管理员权限的)。而其提供了两种修复的方式,其中的推荐方式既是本文要说的nvm的方式。linux
nvm(Node Version Manager)经过对node和npm集中的版本管理主要解决了两个问题git
这里简单介绍一下nvm在MacOS下的安装和使用(注,nvm主要仍是面向mac os和linux用户,使用windows的客官请看这里)github
在安装以前,首先应该须要考虑一下是否要保留原有的系统安装的node。nvm是能够保留原有node来安装的,也提供了切回system node
的方式。npm
可是要注意:
若是系统中存在多用户,那么当前安装的nvm是只针对你的,其它用户若是没有安装则只能使用到系统安装的node版本。二者全局安装的node modules地址是不相同的(/usr/local/lib/node_modules/*
VS~/.nvm/versions/node/vX.X.X/lib/node_modules/*
)。必定程度上是有版本不一致的风险的。
若是选择卸载原有系统node,这里有一篇很实用的讲解windows
安装方式比较简单,只要执行如下的脚本。脚本clone了项目代码,并进行了环境变量的设置。若是出现问题能够查看github上的trouble shooting。bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
在安装完后,关掉终端重开一个新的,输入如下指令验证安装。curl
command -v nvm # should return nvm
注:可使用同一脚原本自动更新nvmgoogle
安装完后,使用起来就很是简单明快了,如下是一些经常使用功能url
1. 安装某一版本的node nvm install
nvm install --lts #安装最新的lts版本的node nvm install node #安装最新版本的node nvm install 6.14.4 #安装node版本6.14.4
2. 列出全部node版本
nvm ls #本机全部版本 nvm ls -remote #远端全部版本
3. 切换、使用某一版本的node nvm use
nvm use --lts #使用最新的lts版本的node nvm use node #使用最新版本的node nvm use 6.14.4 #使用node版本6.14.4
4. 启动node nvm run
nvm run --lts #启动最新的lts版本的node nvm run node #启动最新版本的node nvm run 6.14.4 #启动node版本6.14.4
5. 使用某一版本执行
nvm exec 4.2 node --version
6. 查询某一版本的安装位置
nvm which 5.0
node, --lts都是nvm自动维护的别称,表示最新版本和最新的long-term support版本。
另,system一样也是别称,表示node的非nvm安装的system版本
可使用--reinstall-packages-from=node
来自动在新的node中安装上一版本已有的node modules
nvm install node --reinstall-packages-from=node #从上一版本继承 nvm install 6 --reinstall-packages-from=5 #从某一版本继承
很神秘的是nvm windows很贴心的提供了命令行设置镜像的命令,而mvn木有,因此只好手动来。
1 手动方案,每次执行nvm安装时,执行
export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm install node
2 永久方案,固然是将export放到~/.bashrc
中
npm install的安装速度也是很感人的。因此,安装完node通常会把npm的镜像也设置成淘宝滴。
npm config set registry https://registry.npm.taobao.org
注:劝君莫用cnpm,与npm基本无异,然而常常会出一些想不到的bug。
nvm的卸载是手动完成的,可是不复杂。
首先,删掉nvm文件
$ rm -rf "$NVM_DIR"
随后,修复环境变量,修改~/.bashrc
(若是没有就去bash_profile找找),删掉如下这几行
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion
搞定。
mvn提供了一种管理Node.js版本的便捷方式,无论是安装、切换、删除均可以一步到位,无疑是现阶段的首选。