docs(runner): README §Development Workflow 按两个 loader 的真相改写第 1、3 步 (#3604) - #3621
Merged
Conversation
…3604) 第 1 步「Create a schema file (JSON or TypeScript)」与本文件自己的 §Metadata Loading 直接矛盾:runner 没有任何路径能加载 TypeScript 写的 schema —— LocalBundleLoader 的三个 import.meta.glob 全是 `.json` (MetadataLoader.ts:26-28),NetworkLoader 只 fetch 固定的 `.json` 路径 并直接 `res.json()`(同文件 89、101 行)。按 #3533 的口径(文档不许描述 实现里不存在的能力)改写成 JSON 的两条真实路线,并点名 `src/app-data/` 是 git-ignored、新检出下不存在、仓里没有任何脚本会创建它 —— 这正是照旧 文本操作的读者下一步会撞上的坑(每次加载返回 null,页面渲染成 404)。 第 3 步「changes reload automatically」按 loader 分路限定而非删除: `src/app-data/` 下的 JSON 在 Vite 的 module graph 里,改动不需要重启 dev server;`?api=` 那条 Vite 根本看不见后端。这里刻意没有断言浏览器会自动 刷新 —— App.tsx 只导出组件,是 react-refresh 的边界,更新可能被 保状态的重渲染吸收,而这一点脱离实跑无法从代码确认;写不确定的机制 断言正是本 issue 要清的那类虚构。改成「视图仍是旧文档就刷新页面」, 两种机制下都成立,且对读者可操作。 无 changeset:包 README 的文档修正,与 #3602(同一文件,同样只改 README) 先例一致;ci.yml / lint.yml 对 `**/*.md` 走 paths-ignore。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
yinlianghui
marked this pull request as ready for review
August 7, 2026 16:12
This was referenced Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3604
前提复核(对
origin/main,616353ad1)分诊已核过一轮,这里独立复核一遍,结论一致 —— 行号也没再漂:
packages/runner/README.md:100仍是1. Create a schema file (JSON or TypeScript),docs(runner): 删掉 README 两处虚构能力面(createRunner/runner.config.js),修正 404 文档链接 (#3576) #3602(622c23082,同一文件)与 docs(runner): 删掉 runner.mdx 的幽灵目录与「内置示例 schema」断言,重写 Package Information #3616 合并后均幸存。packages/runner/src/lib/MetadataLoader.ts:26-28——LocalBundleLoader的三个import.meta.glob全部是.json模式;:89/:101——NetworkLoader只fetch固定的${base}/app.json、${base}/pages{path}.json,并直接res.json()。src/app-data/是 git-ignored(packages/runner/.gitignore:1)、git ls-files下无追踪、工作区里也不存在;全仓对它的引用只有 loader 自己和vite.config.ts:25的@app别名,没有任何脚本会创建它(grep -rn 'app-data'全仓,已核)。所以照旧文本在别处建文件的读者,每次加载都拿到null,页面渲染成 404 —— 这条坑按分诊要求写进了正文。改写前后对照
改前
改后(第 2 步未动)
路径拼写与本文件 §Metadata Loading 一节对齐(
app.json+pages/index.json对应路由/),该节的?api=表格和 loader 的解析顺序都已经把这两种形状写清楚了,第 1 步现在指过去而不是另讲一套。第 3 步:为什么是这样限定的(与派发预设有出入,如实说明)
派发要求「限定而非删除」,并预设
LocalBundleLoader一侧「成立(Vite HMR)」。分路保留了,但成立那一侧我没有按「自动热更新」来断言,理由是脱离实跑无法从代码确认:src/app-data/**/*.json经import.meta.glob进入 Vite 的 module graph,dev server 会 watch 它 —— 所以改动不需要重启 dev server;而?api=那条后端完全在 Vite 的视野之外,不存在任何 watch/reload 机制,这一侧的否定是无条件成立的。src/App.tsx只导出组件(RunnerApp+ 一个空的export {}),因此是 react-refresh 的边界;JSON 变更沿MetadataLoader.ts冒泡到这个边界后,可能表现为整页 reload,也可能被一次保状态的重渲染吸收 —— 后者下pageSchema这个useState不变、useEffect的依赖[currentPath, loader]也不变(loader是useMemo(…, [])),重新读取不会发生,读者看到的仍是旧文档。判定这一点需要真起服务在浏览器里看,本任务的范围里不含实跑。写一个未经确认的机制断言,正是本 issue(以及 #3533)要清除的那类东西,所以正文落在两种机制下都成立、且对读者可操作的说法上:「视图仍是旧文档就刷新页面」。如果维护者希望把这一句强化成明确的「自动刷新」,需要先起一次 dev server 实测,我可以另开一趟做。
验证
改动是单文件 markdown,如实写明每条证据的覆盖面:
node scripts/check-control-bytes.mjs✅ OK (scanned 3650 tracked text file(s); skipped 85 binary)git ls-files -z为扫描面node scripts/check-doc-links.mjsLinks are valid across 6 scan roots.SCAN_ROOTS(scripts/check-doc-links.mjs:286)是content/docs、examples、README.md、CONTRIBUTING.md、ROADMAP.md、docs,packages/**不在其中。改前改后都绿,不构成对本改动的背书grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]' packages/runner/README.mdgrep -n 'TypeScript' packages/runner/README.md:170 - **TypeScript:** ≥ 5.0 (strict mode)未跑
pnpm test/pnpm type-check,这是判断不是遗漏:改动是 markdown,不被任何代码路径导入,packages/runner的测试也不读 README;仓库自己的ci.yml与lint.yml对**/*.md走paths-ignore,即本 PR 在 CI 上只会触发control-bytes.yml(无 path 过滤)。为一个必然无关的结果去装一整棵node_modules并构建依赖,不符合共享容器的资源纪律。无 changeset
与 #3602(同一文件、同样只改 README,1 file changed)先例一致:包 README 的文档修正不进 changeset。
changeset-guard.yml的触发条件是paths: .changeset/**,不会因为缺 changeset 而红。越界发现(未在本 PR 修改)
?api=那条不成立 #3620 —— 同一文件 §Features 第 8 行- **Hot Reload** - Automatic reload on schema changes,和第 3 步是同一句无条件宣称,只是位置不同,?api=那条同样不成立。packages/runner/README.md §Development Workflow 教读者写 TypeScript schema 文件,但两个 loader 都只认 JSON #3604 的派发范围被明确锁死在 §Development Workflow,故另立单,未加pm:queue,留给 PM 分诊。按派发要求通读了 §Development Workflow 全节,其余步骤无同类虚构,一并核过:第 2、5 步的
pnpm dev/pnpm build在packages/runner/package.json的scripts里真实存在(vite/vite build);第 4 步是通用表述。顺带核了紧邻的 §Example Schema,其中page/grid/card/statistic四个组件类型在packages/components/src/renderers/下均有对应 renderer,不是虚构,故未动。🤖 Generated with Claude Code
https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Generated by Claude Code