Skip to content

content/docs 有 16 个失效的相对链接,且 check-doc-links.mjs 对相对链接一律放行 #3479

Description

@yinlianghui

#3449(PR #3477)把 Lychee 扫描范围修到 content/docs/** 之后,离线跑出来的副产物:content/docs 里有 16 个失效的相对链接目标(33 处引用),一直没人管。

两件事,一因一果

1. 门禁洞(因)

scripts/check-doc-links.mjsrouteExists():

if (!cleanHref || !cleanHref.startsWith(DOCS_ROUTE_PREFIX)) {
  return true;
}

只要 href 不是以 /docs 开头就直接判过。也就是说 docs-links.yml 这个 PR 门禁只校验站内绝对路由,../plugins/plugin-view.md 这类相对链接一律放行 —— 它们至今由任何门禁都不检查(Lychee 在 #3449 之前也看不到 content/docs)。

2. 累积出来的失效链接(果)

lychee 0.24.2 --offline 实测(命令见文末),16 个失效目标:

A. 扩展名写错 —— 链接写 .md,文件其实是 .mdx(13 个)

content/docs/plugins/ 下这些文件都存在,但都是 .mdx:

plugin-calendar.md   plugin-charts.md    plugin-chatbot.md   plugin-dashboard.md
plugin-editor.md     plugin-form.md      plugin-gantt.md     plugin-grid.md
plugin-kanban.md     plugin-map.md       plugin-markdown.md  plugin-timeline.md
plugin-view.md

这在站点上也是坏的:fumadocs 的路由不带扩展名,/docs/plugins/plugin-view.md 是 404。

B. 目标根本不存在(3 个)

目标 引用处
content/docs/concepts/lazy-loading plugins/plugin-charts.mdx:281plugin-editor.mdx:154plugin-kanban.mdx:365plugin-markdown.mdx:362
content/docs/guide/lazy-loading.md guide/plugins.md:515
content/docs/guide/examples/server guide/index.md:12

content/docs/没有 concepts/ 目录,全仓库也找不到任何 lazy-loading 文档(find content/docs -iname '*lazy*' 为空)。所以 A 类是改扩展名,B 类要么补文档、要么删链接 —— 需要写文档的人判断,不是机械替换。

影响

建议的修法

两件都做,顺序无所谓:

  1. 修 16 个链接(A 类改扩展名;B 类由文档作者决定补还是删)。
  2. check-doc-links.mjs 扩到相对链接 —— 它已经在遍历 content/docs 的每个文件,知道每个 href 所在的文件路径,解析相对路径是几行的事;而且它是无网络的 PR 门禁,天然适合管仓库内链接。管住了以后这类缺陷就不会再攒起来。

注:PR #3477 特意没有--fallback-extensions md,mdx 把 A 类盖掉 —— 那样错误数从 33 降到 6,但降下去的正是真缺陷。宽容的消费端把生产端的错误藏起来,是这个仓库明确要避免的方向。

复现

lychee --offline --no-progress --config lychee.toml \
  'content/docs/**/*.md' 'content/docs/**/*.mdx'
# (需要 PR #3477 的 lychee.toml —— 否则会先被 297 个站内绝对路由的硬错误淹掉)

Blocked-by: none(可以独立修;#3477 只是发现它的工具)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions