Skip to content

根 vitest.config.mts 的 alias 表有 4 个指向不存在目录的死条目(engine / renderer / plugin-aggrid / ui) #3944

Description

@yinlianghui

发现于 #3904 的实现(PR #3942)。不在该 PR 处理 —— 那一单的面是 apps/site/next.config.mjs 与 Playground 的注册缺口;这一条在 vitest.config.mts(共享热文件),是同一类漂移的另一处实例,单独记录。

现象

vitest.config.mtsresolve.alias 里有 41 个 @object-ui/* 条目,其中 4 个指向的目录在 workspace 里并不存在:

vitest.config.mts:246  '@object-ui/engine'        -> packages/engine/src
vitest.config.mts:247  '@object-ui/renderer'      -> packages/renderer/src
vitest.config.mts:258  '@object-ui/plugin-aggrid' -> packages/plugin-aggrid/src
vitest.config.mts:279  '@object-ui/ui'            -> packages/ui/src

其余 37 个都能解析到真实目录。

影响(实测,不是推测)

今天没有任何人会碰到:这 4 个 specifier 在 packages/apps/examples/ 里的 import 数都是 0,所以 alias 从来没被用到,测试也不会因此变红。纯粹是休眠配置。

之所以还是值得记一条:这正是 #3904 那一类「配置声明了、依赖图里没有」的条目 —— 它读起来像是「这些包存在、而且已经接好了」。#3904@object-ui/i18n / @object-ui/plugin-aggrid 挂在 transpilePackages 上什么也不做,而 @object-ui/layout 更早以完全相同的形状让人误判能力已就位(列在配置里、既非依赖也无 import),最后是靠浏览器实测才发现渲染是红面板(#3787)。一个死条目比缺一个条目更坏,因为它读起来像已经接好了。packages/plugin-aggrid 这个包本身已经整个从 workspace 里消失了(只在各 CHANGELOG 的历史记录里还有 @object-ui/plugin-aggrid@0.4.1)。

建议

删掉这 4 行;若想让它不再回来,可以加一条机械化断言 —— alias 表里每个 path.resolve 目标都必须存在(PR #3942apps/sitetranspilePackages 加的就是同形状的守卫:每一项都必须是已声明依赖 + 在 node_modules 里真的 link 得到)。

相关

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions