当前位置: 首页 > news >正文

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

补充说明:Mac 下通过 brew install nvm 所安装的 nvm ,由于安装路径不同,无法正确启用。建议使用 brew uninstall nvm 卸载掉之后,通过本文的方案重新安装一次。

---

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

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

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

 

一、卸载已安装到全局的 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 模块注册的软链

 

二、安装 nvm

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

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

 

三、安装切换各版本 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

 

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

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

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

 

五、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

 

转载于:https://www.cnblogs.com/kaiye/p/4937191.html

相关文章:

  • 数据库连接失败Communications link failure due to underlying exception!
  • js遍历 子节点 子元素
  • Hinernate进行mysql数据库的逆向工程无法生成主外键关系
  • lintcode 中等题:find the missing number 寻找缺失的数
  • Myeclipse使用DB Browser连接数据库错误:OPTION SQL_SELECT_LIMIT=DEFAULT
  • C语言如何清除scanf()缓存
  • 通过XmlDocument读写Xml文档参考地址
  • Myeclipse使用hibernate的逆向工程
  • brew 更新
  • 安装vmare-tools——实现ubuntu与windows的互相复制与粘贴(无需共享文件夹)
  • SSH开发中解决mysql数据库的乱码问题
  • 靠谱助手 BlueStacks
  • 自定义日期类型转换器
  • JDK环境变量详细讲解
  • 2014年末最强悍IT学习视频教程分享
  • 《剑指offer》分解让复杂问题更简单
  • 78. Subsets
  • Android Studio:GIT提交项目到远程仓库
  • CAP 一致性协议及应用解析
  • HomeBrew常规使用教程
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Lucene解析 - 基本概念
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Spring核心 Bean的高级装配
  • 服务器之间,相同帐号,实现免密钥登录
  • 后端_ThinkPHP5
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端临床手札——文件上传
  • 突破自己的技术思维
  • 为视图添加丝滑的水波纹
  • 我的业余项目总结
  • 一份游戏开发学习路线
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (libusb) usb口自动刷新
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (八)c52学习之旅-中断实验
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (四)linux文件内容查看
  • (算法)求1到1亿间的质数或素数
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)菜鸟学数据库(三)——存储过程
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net 提取注释生成API文档 帮助文档
  • .Net中间语言BeforeFieldInit