越界发现,记录于 #3890(workspace 内临时 app 模块解析面)的实测期间。#3890 的文件面是 vite 别名表与 monorepo 分支,这一条是同三个命令的项目根/路由检测面,与别名无关,因此不在 PR #4922 里做。
事实(实测于 origin/main = 5ffcc1432,仓根跑)
fixture:仓根 dogfood/app.json + dogfood/pages/index.json。
objectui dev dogfood/app.json 认出工程结构:
📂 Detected project structure at /home/user/objectui-ws-alias/dogfood
⚙️ Loaded App Config from app.json
📁 Using file-system routing from /home/user/objectui-ws-alias/dogfood/pages
✓ Found 1 route(s)
/ → ./dogfood/pages/index.json
同一份 fixture,objectui serve dogfood/app.json 退化成单 schema 模式,dogfood/pages/ 从未被扫描:
📋 Loading schema: dogfood/app.json
📦 Detected monorepo - using root node_modules
即:它把 app.json(一份 app 配置)当成页面 schema 渲染,路由目录整个丢失。
代码面
commands/dev.ts(fix(cli): derive the temp app's workspace alias table… 之后约 :76-115):先 dirname(absoluteSchemaPath) 求出工程根,在那里找 pages/,找不到再退回 cwd/pages。commands/serve.ts:26-27、commands/build.ts:31-32:只有 existsSync(join(cwd, 'pages')) 一句,完全不看传入的 schema 路径在哪。
所以只有当用户恰好 cd 进工程目录再跑,serve/build 才等价于 dev;从仓根(或任何上层目录)带路径调用,三个命令对"这是什么工程"给出三种答案里的两种。
影响
未预判修法
至少两种读法:把 dev 的工程根解析抽成三命令共用的一步(与 #3890 的 helper 同一方向);或者认定 serve/build 的语义就是"渲染这一个 schema 文件",那么 dev 的行为才是特例,应改文档而不是改代码。取舍留给维护者。
已搜重
本仓开放 issue 搜过 serve command pages directory file-system routing detection differs from dev、cli serve build temp app command parity divergence 两组语义搜:命中只有 #3890(本条来源,模块解析面)与已合的 #3827(生成清单声明面)。两者都不含项目根检测。
越界发现,记录于 #3890(workspace 内临时 app 模块解析面)的实测期间。#3890 的文件面是 vite 别名表与 monorepo 分支,这一条是同三个命令的项目根/路由检测面,与别名无关,因此不在 PR #4922 里做。
事实(实测于
origin/main=5ffcc1432,仓根跑)fixture:仓根
dogfood/app.json+dogfood/pages/index.json。objectui dev dogfood/app.json认出工程结构:同一份 fixture,
objectui serve dogfood/app.json退化成单 schema 模式,dogfood/pages/从未被扫描:即:它把
app.json(一份 app 配置)当成页面 schema 渲染,路由目录整个丢失。代码面
commands/dev.ts(fix(cli): derive the temp app's workspace alias table…之后约 :76-115):先dirname(absoluteSchemaPath)求出工程根,在那里找pages/,找不到再退回cwd/pages。commands/serve.ts:26-27、commands/build.ts:31-32:只有existsSync(join(cwd, 'pages'))一句,完全不看传入的 schema 路径在哪。所以只有当用户恰好
cd进工程目录再跑,serve/build 才等价于 dev;从仓根(或任何上层目录)带路径调用,三个命令对"这是什么工程"给出三种答案里的两种。影响
objectui dev app.json能跑通的工程,objectui serve app.json/objectui build app.json产出的是另一个东西(单页 + 把 app 配置当 schema),且不报错。未预判修法
至少两种读法:把 dev 的工程根解析抽成三命令共用的一步(与 #3890 的 helper 同一方向);或者认定 serve/build 的语义就是"渲染这一个 schema 文件",那么 dev 的行为才是特例,应改文档而不是改代码。取舍留给维护者。
已搜重
本仓开放 issue 搜过
serve command pages directory file-system routing detection differs from dev、cli serve build temp app command parity divergence两组语义搜:命中只有 #3890(本条来源,模块解析面)与已合的 #3827(生成清单声明面)。两者都不含项目根检测。