Repository navigation
v0.7.1 — 体积再瘦身:安装包与磁盘双降
v0.7.1 — 体积再瘦身:安装包与磁盘双降
本 Release 为六级版(38 套六级真题)。
在 v0.7.0 增量更新的基础上,继续压缩安装体积与下载量。
这次省了什么
| 项 | v0.7.0 | v0.7.1 | 省下 |
|---|---|---|---|
| 安装后磁盘占用 | 约 1.26 GB | 约 1.0 GB | 约 260 MB |
依赖包 -deps.zip |
123 MB | 约 55 MB | 约 68 MB |
完整包 .7z |
299 MB | 约 240 MB | 约 60 MB |
程序包 -update.zip |
3.6 MB | 3.6 MB | — |
怎么做到的
① 依赖树按「运行期闭包」裁剪
前端与管理后台都以预编译好的产物提供服务,运行期根本不需要 React、antd、
Vite、TypeScript、ESLint 这些构建期依赖。改用白名单制:从真正的运行入口出发
递归展开依赖图,只保留闭包内的包(node_modules 解压后 365 MB → 141 MB)。
顺带清掉三个死依赖:resend(邮件服务,源码零引用)、mysql v2(已废弃,
实际用 mysql2)、以及一批 Expo/React Native 残留。
② MySQL 单机自用调参
| 参数 | 原值 | 新值 | 原因 |
|---|---|---|---|
innodb_redo_log_capacity |
100 MB(默认) | 32 MB | 数据库才 16 MB |
skip-log-bin |
关闭→开启 | 开启 | binlog 是为主从复制设计的,单机无用且持续增长 |
| 临时表空间上限 | 无限增长 | 64 MB | 防跑飞 |
innodb_buffer_pool_size |
256 MB | 128 MB | 省的是内存不是磁盘 |
实测:MySQL 数据目录 219 MB → 约 140 MB,数据完好(38 门课程校验通过)。
③ 这些改动对老用户同样生效
MySQL 配置由启动器每次启动时生成,存量安装下次启动即生效,无需重装。
依赖裁剪则通过更新包传递——并且本版改了依赖门控的判据(见下),
确保老用户能真正拿到裁剪版、且本地多余依赖会被清理掉。
依赖门控改版(重要)
v0.7.0 用 package-lock.json 的哈希判断「依赖有没有变」。但裁剪只改打进包的内容,
不改 lock 文件——照旧判据,老用户会得出「依赖没变」从而跳过依赖层,
磁盘永远瘦不下来。
本版改为:
- 更新清单里带依赖文件清单的哈希与归属包名清单;
- 客户端比对本地标记(更新器安装成功后写入),哈希不同才下载;
- 依赖层安装后清理本地多余的旧依赖(覆盖安装只覆盖不删除),
工作区包@juting/*永不删。
结果:老用户升级到本版时会下载一次依赖包(约 55 MB),之后本地多出来的
构建期依赖会被自动清掉,释放约 220 MB 磁盘。
资产说明
| 文件 | 用途 |
|---|---|
juting-v0.7.1-win-full-cet6.7z |
首次安装用这个,需 7-Zip 解压 |
juting-v0.7.1-win-full-cet6-update.zip |
程序层(客户端一键更新必下) |
juting-v0.7.1-win-full-cet6-deps.zip |
依赖层(按需,客户端自动判断) |
juting-v0.7.1-win-full-cet6-media.zip |
音频层(按需,客户端自动判断) |
SHA256SUMS.txt |
校验和 |
验证
改动涉及依赖裁剪,风险在「裁掉运行期要用的包」。因此做了真实启动验证
(不是静态检查):裁剪后的目录完整跑通全栈启动——数据库初始化、38 门课程导入、
后端健康检查、学习端与管理端 HTTP 200、音频流实测返回 audio/ogg 与完整字节数、
课程数据接口返回完整元数据。
过程中实测抓到两个会导致崩溃的裁剪 bug(作用域包容器目录被误删、
vite preview 依赖的 @vitejs/plugin-react 被误裁),均已修复并补了回归测试。
数据
- 六级版:38 门 / 2017—2026 真题 / 字幕 7690 行 / 译文覆盖 99% / 题干锚点映射 100%