使用 nvm 管理不一样版本的 node 与 npm

补充说明:Mac 下经过 brew install nvm 所安装的 nvm ,因为安装路径不一样,没法正确启用。建议使用 brew uninstall nvm 卸载掉以后,经过本文的方案从新安装一次。node

---react

最近 NodeJS 的版本更新速度有点 Chrome 的迹象,4.0 版本没发布多久,又推出了 5.0 。升级 NodeJS 以后能够很方便的开始使用一些 ES6 的语言特性,但又会致使团队内部的 mz-fis 框架没法更新,由于它暂时只支持 v0.12 版本。因而团队开始试用管理 node 版本的工具  nvm,试用后发现 Mac 下很好用,推荐你们尽快用起来。git

nvm 是 Mac 下的 node 管理工具,有点相似管理 Ruby 的 rvm,若是是须要管理 Windows 下的 node,官方推荐是使用 nvmwnvm-windowsgithub

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

 

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

若是以前是在官网下载的 node 安装包,运行后会自动安装在全局目录,其中npm

node 命令在 /usr/local/bin/node ,npm 命令在全局 node_modules 目录中,具体路径为 /usr/local/lib/node_modules/npmwindows

安装 nvm 以后最好先删除下已安装的 node 和全局 node 模块:react-native

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 -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

安装完成后请从新打开终端环境,Mac 下推荐使用 oh-my-zsh 代替默认的 bash shell。bash

 

3、安装切换各版本 node/npm

nvm install stable #安装最新稳定版 node,如今是 5.0.0
nvm install 4.2.2 #安装 4.2.2 版本
nvm install 0.12.7 #安装 0.12.7 版本

# 特别说明:如下模块安装仅供演示说明,并不是必须安装模块 nvm use
0 #切换至 0.12.7 版本
npm install -g mz-fis #安装 mz-fis 模块至全局目录,安装完成的路径是 /Users/<你的用户名>/.nvm/versions/node/v0.12.7/lib/mz-fis
nvm use 4 #切换至 4.2.2 版本
npm install -g react-native-cli #安装 react-native-cli 模块至全局目录,安装完成的路径是 /Users/<你的用户名>/.nvm/versions/node/v4.2.2/lib/react-native-cli

nvm alias default 0.12.7 #设置默认 node 版本为 0.12.7

 

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

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

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

 

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 ,以避免出现全局模块没法更新的问题。

固然,若是你用的是 windows 操做系统,我只能说 …… 朋友,能不能早点换个 Mac

相关文章
相关标签/搜索