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

Node 版本管理

node 已经成为每个前端必备的技能,就算没研究过 node 的运行机制,也会用到依赖 node 运行的包管理器 npm。

近日 node 发布新版本 8.0,npm 也升级到了 5.0,加了 lock file,社区里关于有没有必要继续使用 yarn 管理工具争论不休,我认为静观其变,待 npm 5 逐渐稳定后再转过去也不迟,目前 yarn 还是比较靠谱的替代方案。

当然本文要讲的不是 node 也不是 npm,但又离不开这两者。

当 node 发布新版本时,每个关注 node 的开发都会安装下新版本尝尝鲜,升级新版本会替换旧版本,典型例子使用 Homebrew 管理软件,当 upgrade node 时,node 的确更新了,但是旧的不见了。

因为 node 升级版本也是遵循版本升级原则,版本号第一位升级代表可能会不兼容之前的版本(删除修改某些 api)。

之前的旧项目可能因为升级跑不起来了,这时候就有多个版本的 node 共存的需求。

Github 上开源的比较好用的有 nvm 和 n,下面分别介绍两者。

nvm

Github 地址:https://github.com/creationix...

nvm 并不支持 windows,不过已经有其它解决方案了,nvm-windows 和 nodist

基本安装:

使用 cURL:

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

或者 Wget:

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

安装的注意事项可以去 github 上查看。

下面说下简单的用法:

  • nvm install node 安装 node latest

  • nvm install --version 安装指定版本

  • nvm use node 在任何新的 shell 只是使用已安装的版本

  • nvm use --version 在任何新的 shell 只是使用指定版本

  • nvm run node --version 运行指定版本

  • nvm ls 查看已安装的版本

  • nvm ls-remote 查看可安装版本

以上几条是常用的命令,可以解决 node 版本管理的需求。

n

Github 地址:https://github.com/tj/n

基本安装:

npm install -g n

基本用法:

  • n <version> 安装指定版本,如果指定版本已经安装那么会启动此版本

  • n 获取版本列表,上下可以移动选择版本,enter选择版本,^C 退出

  • n latest 安装 lts 版本

  • n stable 安装或运行稳定版本

  • n lts 安装或运行 lts 版本

  • n rm 0.9.4 v0.10.0 移除某些版本,或者简写为 n - 0.9.4

  • n prune 删除非当前版本的其它所有版本

以上是 n 的简单使用

总结

本篇主要是工具篇,简单介绍下两种工具,具体大家可以去 GitHub 查看,在简洁程度上我比较喜欢 n 这个工具,大家可以都尝试尝试,重点在于解决版本切换问题。

文章出自 orange 的 个人博客 http://orangexc.xyz/

相关文章:

  • XNA Game Stdio 3.0 发布了
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • 可能出现的问题
  • Mysql远程登陆错误:ERROR 2003
  • 在Word里实现禁止复制和选定
  • RAC维护手记08-ASM磁盘组信息查看常用命令
  • 什么是TELNET协议
  • [转]一种革命性的自绘菜单实现
  • 移动端HTML5音频与视频问题及解决方案
  • Ubuntu 14.04 下解决maven访问速度慢问题
  • InstantBoss 让你成为一个自律的人!
  • 处理器调度
  • 亲历:我的IT认证培训之路与技术学习方法(转载)
  • input的行数自动增减
  • PHP学习
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【笔记】你不知道的JS读书笔记——Promise
  • avalon2.2的VM生成过程
  • Docker容器管理
  • Docker下部署自己的LNMP工作环境
  • JavaScript服务器推送技术之 WebSocket
  • JavaScript函数式编程(一)
  • JavaScript中的对象个人分享
  • 分布式任务队列Celery
  • 开发基于以太坊智能合约的DApp
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用 Docker 部署 Spring Boot项目
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #宝哥教你#查看jquery绑定的事件函数
  • $(function(){})与(function($){....})(jQuery)的区别
  • (11)MSP430F5529 定时器B
  • (6)设计一个TimeMap
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (第二周)效能测试
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (三)elasticsearch 源码之启动流程分析
  • (四)鸿鹄云架构一服务注册中心
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .gitignore文件设置了忽略但不生效
  • .NET CORE Aws S3 使用
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET NPOI导出Excel详解
  • /var/spool/postfix/maildrop 下有大量文件
  • :中兴通讯为何成功
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ NOI 2001 ] 食物链
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限