背景
扫描 app/[locale]/docs/[...slug]/page.tsx 确认:文档页目前没有 prev/next 导航、没有"最后更新"时间、没有阅读时长——300+ 篇文档的站,读完一篇即断路,长文无时间预期。
方案
- Prev/Next:fumadocs-core 自带
findNeighbour(tree, url),接到 DocsPage footer 即可,按当前 locale 的 pageTree 取邻居(zh/en 各自成链)。
- 最后更新时间:build 时从 git log 取每文件最后 commit 日期(注意
dev_docs/translation-pipeline-blindspot-analysis.md 里的教训:批量 commit 会污染 git 日期,需过滤 bot 作者与 [skip ci] commit 后取最近一次人类内容 commit),产出 JSON 进 generated/,页面静态读取。
- 阅读时长:remark 插件在 build 时按正文字数估算(中文 ~400 字/分钟,代码块折半),写进 page data。
三项全部 build 时产出,零运行时开销,不动 SSG(Vercel CPU 红线)。
验收
- 任一文档页可见三项信息,zh/en locale 均正常
pnpm build 前后表 diff:所有 docs 路由仍为 SSG(●/○)
- 翻译版页面的"最后更新"显示的是该语言文件自身的更新时间
背景
扫描
app/[locale]/docs/[...slug]/page.tsx确认:文档页目前没有 prev/next 导航、没有"最后更新"时间、没有阅读时长——300+ 篇文档的站,读完一篇即断路,长文无时间预期。方案
findNeighbour(tree, url),接到 DocsPage footer 即可,按当前 locale 的 pageTree 取邻居(zh/en 各自成链)。dev_docs/translation-pipeline-blindspot-analysis.md里的教训:批量 commit 会污染 git 日期,需过滤 bot 作者与[skip ci]commit 后取最近一次人类内容 commit),产出 JSON 进generated/,页面静态读取。三项全部 build 时产出,零运行时开销,不动 SSG(Vercel CPU 红线)。
验收
pnpm build前后表 diff:所有 docs 路由仍为 SSG(●/○)