当前位置: 首页 > 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学习
  • Angular 响应式表单之下拉框
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CentOS 7 防火墙操作
  • css系列之关于字体的事
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6 学习笔记(一)let,const和解构赋值
  • HTTP中的ETag在移动客户端的应用
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 23种设计模式 之单例模式 7种实现方式
  • Linux后台研发超实用命令总结
  • mysql innodb 索引使用指南
  • MySQL主从复制读写分离及奇怪的问题
  • python学习笔记-类对象的信息
  • 从零开始学习部署
  • 第2章 网络文档
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 目录与文件属性:编写ls
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 温故知新之javascript面向对象
  • 一个项目push到多个远程Git仓库
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 译米田引理
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #{} 和 ${}区别
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.proxy和$.extend
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)(1.9) MSP (version 4.2)
  • (2015)JS ES6 必知的十个 特性
  • (31)对象的克隆
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (四) 虚拟摄像头vivi体验
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)负载均衡,回话保持,cookie
  • (转)人的集合论——移山之道
  • .mysql secret在哪_MySQL如何使用索引
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Core 中的路径问题