Mac OS 使用 nvm 管理 node 与 npm 版本

nvm 是 Mac 下的 node 管理工具,有点类似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推荐是使用 nvmwnvm-windows

以下具体说下 Mac 系统中的安装与使用细节(Windows 系统仅供类比参考)。

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

如果之前是在官网下载的 node 安装包,运行后会自动安装在全局目录,其中 node 命令在 /usr/local/bin/node ,npm 命令在全局 node_modules 目录中,具体路径为 /usr/local/lib/node_modules/npm

安装 nvm 之后最好先删除下已安装的 node 和全局 node 模块:

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 模块注册的软链

2. 安装 nvm

cURL 安装:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash

Wget 安装:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash

nvm 安装好之后,暂时还不能用,需要添加环境变量,nvm 安装好以后会提示添加环境变量到下图中提示自己添加一下的代码便是,如下图,如此 nvm 就可以用了

nvm_01.png

nvm_02.png

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

直接在终端执行以上命令后 nvm 只对本次有效,当终端关闭之后再打开将 nvm 失效,nvm 仍然不可用,需要写入 /Users/[username]/ 目录中的 .bash_profile 文件中才能生效;如果 /Users/[username]/ 目录没有 .bash_profile 文件,需要创建 .bash_profile 文件
这样 nvm 就可以用了,执行 nvm --version 会看到 nvm 的安装版本;

3. 使用安装切换各版本 node/npm

使用 nvm 安装 node,请查看 Mac OS 使用 nvm 安装 nodejs

4. 使用 .nvmrc 文件配置项目所使用的 node 版本

如果你的默认 node 版本(通过 nvm alias 命令设置的)与项目所需的版本不同,则可在项目根目录或其任意父级目录中创建 .nvmrc 文件,在文件中指定使用的 node 版本号,例如:

cd <项目根目录>          # 进入项目根目录
echo "5.9" > .nvmrc    # 创建 .nvmrc 文件并指定 Node.js 版本
nvm use                # 无需指定版本号,会自动使用 .nvmrc 文件中配置的版本
node -v                # 查看 Node.js 是否切换为对应版本

5. nvm 与 n 的区别

node 版本管理工具还有一个是 TJ 大神的 n 命令,n 命令是作为一个 node 的模块而存在,而 nvm 是一个独立于 node/npm 的外部 shell 脚本,因此 n 命令相比 nvm 更加局限。

由于 npm 安装的模块路径均为 /usr/local/lib/node_modules ,当使用 n 切换不同的 node 版本时,实际上会共用全局的 node/npm 目录。 因此不能很好的满足『按不同 node 版本使用不同全局 node 模块』的需求。

因此建议各位尽早开始使用 nvm ,以免出现全局模块无法更新的问题。

原文:http://www.cnblogs.com/kaiye/p/4937191.html
原文:http://www.cnblogs.com/greenteaone/p/5065981.html

发表评论
* 昵称
* Email
* 网址
* 评论