-
Notifications
You must be signed in to change notification settings - Fork 54
如无特别说明,版本升级方法都是直接把新版程序覆盖旧版,或者置于同一目录下。数据库、设置迁移、bug修复等都是全自动的。如果从Safari打开新版网页,可能需要刷新两次页面。
个别版本的升级见相应的GitHub releases说明。
此程序设计为尽可能避免删库重装式升级,避免用户丢失标记、评分、评价等内容。如果遇到bug可以在GitHub Issues中提出。
当检测到程序内部package.json
大于config.json
中version
字段的版本号时,程序自动运行升级脚本,处理数据库和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了,麻烦