
1.4 Node长期支持和Node升级
2014年,一组Node维护人员分离出来并形成了自己的Node.js分支,名为io.js。当时震惊了Node界(或至少有一些人大吃一惊)。分裂的原因是创建io.js的人觉得,一直对Node进行维护的公司Joyent在实现对Node的监管上步伐太慢。他们还认为Joyent在支持最新的V8引擎更新方面已经落后了。
幸运的是,两个组织已经解决了导致分裂的问题,并将他们的努力重新合并为一个仍然被命名为Node.js的产品。Node现在通过由Linux基金会赞助的管理性非营利组织Node基金会进行管理。因此,两个组织的代码合并起来,不再是第一个官方发布版本Node 1.0,而是Node 4.0。Node 4.0代表了缓慢节奏的Node 1.0和迅猛发展的io.js 3.0版本。
1.4.1 Node的最新语义化版本规范
合并的一个结果是,Node开始基于严格的时间线来进行发布,同时版本号遵循语义化版本规范(Semver)。Semver使用3组数字来定义功能发布,每组数字都具有特定含义。例如,写这部分内容时,我在服务器上正在使用的Node.js的版本是4.3.2。这意味着:
- 主版本号是4,只有在对Node进行重要的且不向后兼容的更改时,这个数字才会增加;
- 次版本号是3,当有新的功能被添加,但是保持向后兼容时,这个数字会增加;
- 修订号是2,当修复安全性问题或者bug,需要发布一个新版的时候,会增加这个数字,这个版本号的变化同样是向后兼容的。
我在Windows上使用5.7.1的稳定版本,而在Linux上使用6.0.0版进行测试。
Node基金会还支持另外一种发布方式,比我们熟悉的这种略显随意的发布方式更具稳定性,尽管它存在一些问题。它开始于Node.js v4的第一个LTS(长期支持)版本,一直到2018年4月之前都会获得支持。Node基金会于2015年10月底发布了第一个稳定版本Node.js v5。Node 5.xx只被支持到2016年4月,2016年4月它被Node.js v6替代。该策略是为了每6个月推出一个稳定新版(目前的最新版就是这个版本),但隔一个版本才会有一个LTS,比如Node v4。
![]()
6.0.0版作为当前版本发布
2016年4月,Node发布了6.0.0版本,取代了5.x版本,并在2016年10月转换为新的LTS。Node还将正在开发的版本从“稳定版”更名为“当前版”。
在2018年4月后,Node v4会进入维护模式。同时,将会出现新的向后兼容更新(称为semver-major bumps,主版本调整),以及安全性问题和bug修复。
![]()
本书涵盖哪个版本
本书涵盖了Node.js v4的LTS版本。在需要的地方,我会用注释标记出v4和v5/v6之间的差异。
无论你决定使用哪个LTS版本,每个新的安全性/bug修复发布之后,你都需要立即升级。然而,处理主版本更新则取决于你和/或你的组织。升级应该是向后兼容的,仅影响底层引擎的改进。不过,在升级和制定测试计划时,你还是需要将所有新版本都考虑进去。
你应该使用哪个版本呢?在企业或企业环境中,你很可能希望使用LTS版本,目前来说也就是Node.js v4。但是,如果你的环境能够更快地适应突破性变化,则可以使用最新的“Node当前版”以得到最新的v8和其他新特性。
![]()
测试和产品中的乐趣
我将在第11章讲解Node调试和测试,以及其他一些开发过程和产品程序。
1.4.2 Node版本更新
随着发布计划的增加,使Node版本保持最新版尤为重要。幸运的是,升级过程毫不费劲,而且还有替代方案。
你可以通过下面这条命令来检查Node版本:
node -v
如果你用的是一个包安装软件,那么运行包更新程序就可以更新Node了,这同时也会更新你的服务器上的其他程序(Windows上不需要sudo):
sudo apt-get update
sudo apt-get upgrade --show-upgraded
如果你用的是安装软件,那么请遵循Node网站上提供的相关说明,否则你可能无法更新Node。
你也可以使用npm来更新Node,命令如下:
sudo npm cache clean -f
sudo npm install -g
sudo n stable
如果要在Windows、OS X或者你的树莓派上安装最新版Node,请在Node网站的下载页面中下载安装程序,并且运行。它会用新版覆盖旧版。
![]()
Node版本管理器
在Linux或者OS X环境中,你也可以使用Node版本管理器(Node Version Manager, nvm)工具来更新Node。
Node包管理器(Node package manager, npm)本身的更新频率甚至比Node还高。要更新npm,只需执行:
sudo npm install npm -g n
这个命令将会安装所有需要的软件的最新版。你可以通过这条命令检查npm的版本:
npm -v
请注意,这可能会导致某些问题,尤其是在团队环境中。如果你的团队成员使用的Node是用npm安装的,而你手动将npm升级到更新的版本,那么可能出现不一致的构建结果,而且这个问题不易被发现。
我将在第3章更详细地介绍npm,但现在请先记住,你可以使用以下命令将所有Node模块更新到最新版本:
sudo npm update -g