NodeBB 6: 版本升级

Posted by River Yang on 2016-11-15

做网站很头疼的一件事是版本升级,因为新版本发布之后不知道会有哪些 breaking changes, 不知道你的网站哪些代码会不会不兼容这些 breaking changes, 如果不兼容,就不能轻易升级。版本升级其实无非就是 schema changes, 或曾加或减少了某些数据库字段,升级的时候需要改改数据库的 schema 以及对历史数据做 data fix.

NodeBB 在双十一的时候升级了 1.3.0 版本,针对升级,NodeBB 提供了升级帮助文档,要点总结如下:

  1. 每次升级要先升级补丁版本(patch revisions,比如从 v0.1.0 到 v0.1.1), 再升级小版本(minor revisions, 比如从 v0.1.3 to v0.2.0);
  2. 升级前要先备份数据,包括数据库和 upload 文件夹;
  3. 升级代码其实就是通过 git pull 代码,但 patch revisions 和 minor revisions 升级方式不一样,见升级帮助文档;
  4. 升级代码之后要运行 ./nodebb upgrade; 这个命令会检查需要升级的 npm 包和运行 schema fix.

但是光这样就行了? 这样升级之后 NodeBB 是可以了,但是那些第三方插件和主题呢? 这就难以保证了,需要到各个插件的作者那里去看他们有没有兼容新版本。如果插件不兼容新版本的话,那升级网站可就有风险了。

作为一个开发者,当然也得会看 NodeBB 的新版本有哪些 break changes, 然后就可以尝试修复某些不兼容的老插件了。NodeBB 对于 break changes 的管理做得挺好的,从他们的官方库里都可以查得到。

下面总结一下 NodeBB 1.2.0 升级到 1.3.0 版本的 breaking changes。

Breaking changes

  1. 更改 no-widget-classhas-widget-class, widget 的加载逻辑变了,只有有 widget 的时候,页面布局才会变;
  2. Admin 和 版主可以看到一些新的管理工具了;
  3. Posts.getPostSummaryByPids 接口变动;
  4. favourites.js 接口变动,以前的 favourite 都改名叫 bookmark 了, 比如表 uid:<uid>:favourites 改为 uid:<uid>:bookmarks 等等, vote 和 bookmark 独立开来;

从 github 中可以看出来变化并不多,甚至从 1.1.0 版本到 1.2.0 的变化也不大,只是升级 jQuery 和 Nodejs 版本,抛弃了老旧的浏览器的支持。本次升级 widget 的加载逻辑变动,还有 bookmark 的变动影响还是蛮大的,升级之前请先检查你使用的主题和插件都支持这些变化,否则出问题了可别怪啊。

V2MM 已升级至最新版,欢迎来此交流!