越界发现,记录于 #3575 (补全 runner vite 别名表的传递闭包)期间。未在该 PR 中顺手修改 —— #3575 的裁定是「把闭包补全」,这是同一张表的另一个方向 的破缺(表里有条目、对应的包却没了),属于独立缺陷,交 PM 分诊。
现象 packages/runner/vite.config.ts 里有这一条别名:
"@object-ui/data-objectql" : path . resolve ( __dirname , "../../packages/data-objectql/src" ) , 但 packages/data-objectql/这个目录不存在 :
$ ls -d packages/data-objectql
ls: cannot access 'packages/data-objectql': No such file or directory
而且 @object-ui/data-objectql 这个 specifier 在整个仓库里只出现这一次 ,就是上面这行别名本身:
$ grep -rn "data-objectql" --include=*.ts --include=*.tsx --include=*.json --include=*.mdx --include=*.md . | grep -v node_modules
./packages/runner/vite.config.ts:66: "@object-ui/data-objectql": path.resolve(__dirname, "../../packages/data-objectql/src"),
packages/runner/package.json 的 dependencies 里也没有它(只有 components / core / plugin-charts / plugin-kanban / react / types 六个)。
严重度:休眠,今天没有用户会踩到 判为 observation-class 并打 finding,理由是这条别名当前完全不可达 :
没有任何源码 import @object-ui/data-objectql,所以别名永远不会被匹配; Vite 的 resolve.alias 不会校验 replacement 路径是否存在,不匹配就不解析,因此既不报错也不影响 dev/build。 实测:补全闭包后 runner 的 dev server 从 src/main.tsx 爬完整模块图 2381 个模块、0 个非 200 ,这条死别名全程没有参与。
但它有一个实际代价 #3575 在别名表旁留了一行「如何重新推导闭包」的命令,该命令要 grep -r 遍历表里每个包的 src。这条指向空目录的条目会让它每次都打印一行:
grep: packages/data-objectql/src: No such file or directory
#3575 里已用 2>/dev/null 把它压掉并在注释里点名了本单,但那是绕过 而不是修复 —— 一个长期存在的假条目会让「表 = 闭包」这条不变量看起来是软的,下一个人加条目时也就更容易照抄一个不核对的写法。
建议方向(不预设结论) 直接删掉这一行(若 data-objectql 这个包确已下线/改名 —— 注意现存的是 @object-ui/data-objectstack,疑似为其后继)。 若该包只是暂时不在树内、计划回归,则保留但补一行注释说明,并把 packages/runner 按 runner.mdx 的「From Source」步骤起不来:vite 别名表漏了 5 个源码实际 import 的工作区包 #3575 那条推导命令里的 2>/dev/null 换成显式的「目录存在性」过滤。 需要维护者确认 data-objectql 是被 data-objectstack 取代了还是别的情况,故本单不预设。
Generated by Claude Code
越界发现,记录于 #3575(补全 runner vite 别名表的传递闭包)期间。未在该 PR 中顺手修改 —— #3575 的裁定是「把闭包补全」,这是同一张表的另一个方向的破缺(表里有条目、对应的包却没了),属于独立缺陷,交 PM 分诊。
现象
packages/runner/vite.config.ts里有这一条别名:但
packages/data-objectql/这个目录不存在:而且
@object-ui/data-objectql这个 specifier 在整个仓库里只出现这一次,就是上面这行别名本身:packages/runner/package.json的dependencies里也没有它(只有 components / core / plugin-charts / plugin-kanban / react / types 六个)。严重度:休眠,今天没有用户会踩到
判为 observation-class 并打
finding,理由是这条别名当前完全不可达:@object-ui/data-objectql,所以别名永远不会被匹配;resolve.alias不会校验 replacement 路径是否存在,不匹配就不解析,因此既不报错也不影响 dev/build。实测:补全闭包后 runner 的 dev server 从
src/main.tsx爬完整模块图 2381 个模块、0 个非 200,这条死别名全程没有参与。但它有一个实际代价
#3575 在别名表旁留了一行「如何重新推导闭包」的命令,该命令要
grep -r遍历表里每个包的src。这条指向空目录的条目会让它每次都打印一行:#3575 里已用
2>/dev/null把它压掉并在注释里点名了本单,但那是绕过而不是修复 —— 一个长期存在的假条目会让「表 = 闭包」这条不变量看起来是软的,下一个人加条目时也就更容易照抄一个不核对的写法。建议方向(不预设结论)
data-objectql这个包确已下线/改名 —— 注意现存的是@object-ui/data-objectstack,疑似为其后继)。2>/dev/null换成显式的「目录存在性」过滤。需要维护者确认
data-objectql是被data-objectstack取代了还是别的情况,故本单不预设。Generated by Claude Code