Skip to content
umonaca edited this page Feb 21, 2021 · 7 revisions

一般步骤

如无特别说明,版本升级方法都是直接把新版程序覆盖旧版,或者置于同一目录下。数据库、设置迁移、bug修复等都是全自动的。如果从Safari打开新版网页,可能需要刷新两次页面。
个别版本的升级见相应的GitHub releases说明。

升级机制

此程序设计为尽可能避免删库重装式升级,避免用户丢失标记、评分、评价等内容。如果遇到bug可以在GitHub Issues中提出。

技术细节

当检测到程序内部package.json大于config.jsonversion字段的版本号时,程序自动运行升级脚本,处理数据库和config.json文件。

对于config.json,升级是写入新增的字段,并在升级完成后用package.json内的版本号覆盖version字段的版本号。未来可能将不再使用config.json记录程序打开以前的版本,而采用数据库进行记录。

对于数据库升级是采用大幅修改过的knex-migrate。数据库迁移文件位于database/migrations内,升级时自动逐个运行新增的迁移文件。每完成一个迁移文件,就在数据库中的knex_migrations表中记录完成的迁移文件。这一做法与knex自己的migration API是一致的,knex_migrations表的字段也是一致的。

此外,首次运行程序时没有数据库,初始化时会自动在knex_migrations中标记当前版本的所有迁移文件为已完成,跳过迁移,这样就避免了冲突。

对于开发有经验,使用源码运行的开发者可以使用knex your_migration_name down回滚一次数据库迁移。具体实现见源代码。

其它

knex-migrate所调用的umzug v2.3.0要求{up: filename}filename必须为未运行过的migration否则报错,然而修复#24中提到的Mac OS版bug需要对此做出调整,因此我做了一个修改版的umzug v2.3.1,命名为@umonaca/umzug并发布于npm上。主要是不想重构knex-migrate适配umzug v3了,麻烦

Clone this wiki locally