[P1][CR-F8] 生成的 meta 文件全量静态导入:act-scene chunk 约 3.3MB,生产环境开启 sourcemap #532
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题描述
三个由打包脚本生成的 TypeScript 元数据文件合计约 8 万行,全部被静态 import 进主入口。vite 配置里也没有
manualChunks,结果 act-scene 的 chunk 达到约 3.3MB(gzip 后约 730kB)。生产构建还开着sourcemap: true,map 文件有 10.6MB,并且会随站点一起公开发布。另外,生成器在模板字符串里输出运行时逻辑,这部分代码没法单独测试。
证据
src/render/missiles-meta.tsscripts/pack-missiles.tssrc/render/overlays-meta.tsscripts/pack-overlays.tssrc/ui/baked-ui-meta.tsscripts/pack-ui.tssourcemap: true。rollupOptions里只配置了多入口,没有manualChunks。上面三个文件都被静态 import,所以会进入首屏 chunk。velocityToDccDirection写在生成器的模板字符串里(pack-missiles.ts:547),生成后出现在 missiles-meta.ts:76。它是渲染时每帧都要调用的函数,却无法在不运行生成器的情况下单独测试或修改。以上构建数据来自在
e475c2e上执行vite build的结果。根因
修复指南
public/.../*.json,或者src/下的.json文件(配合import()实现代码分割);fetch/ 动态import():进入 Act 1 只加载 Act 1 用到的投射物、overlay 和 UI 元数据;.ts文件中,JSON 通过运行时校验(至少校验版本号和字段存在性)后再使用。velocityToDccDirection这类函数移到src/render/missile-direction.ts,生成器只输出数据,并为这类函数补上单元测试。'hidden':仍然生成 map 用于错误上报还原,但不在产物中引用、不公开发布。如果确实需要公开,也要单独决定并记录原因。manualChunks把 drlg、技能数据、UI 元数据拆成独立的 chunk,并用rollup-plugin-visualizer这类工具生成报告,放进 CI 产物里。// DO NOT EDIT — generated by scripts/pack-xxx.ts;验收标准
//# sourceMappingURL引用,也不发布.map文件。velocityToDccDirection位于普通模块中并有单元测试;三个生成文件只包含数据。npm run typecheck0 error;npx vitest run全部通过。相关
embedded-drop-tables和.r8,本 issue 覆盖这三个 meta 文件和 sourcemap。public/中烘焙资源入库的问题。