日常更新执行 npm run build。构建在生成站点、全文索引和兼容旧地址后执行 npm run verify:site;检查失败会使构建失败。已有 dist/ 时可单独执行 npm run verify:site,但修改源码后应重新构建。
检查器使用 Python 3 标准库,读取当前源码、生成的文章数据和 dist/,不依赖本机 Hexo 备份。npm run verify 仍用于首次迁移的保真检查,不替代日常发布检查。
- 文章标题、说明、日期、更新日期和生成数据的源文件校验值;每篇文章必须有对应的发布页面。
- 文章网址唯一;同一系列的序号必须是非负整数且唯一。系列目录可只填写
series,不填写series_order。 - 本地草稿与
draft: true、published: false的文章不出现在发布文章数据中;构建中的文章正文必须属于一个已发布的规范地址。 - 全部 HTML 页面中的本地链接、图片、脚本、样式、
srcset、分享图片和内部锚点;CSS 中的本地字体与图片。 - 每篇文章的三个中文搜索筛选字段与文章数据一致:内容类型、专题、课程。课程笔记需有课程名;系列文章需有专题名。
- 文章的
og:image与twitter:image指向存在的本地图片;全文索引与.nojekyll存在。
这里的链接检查核验当前构建内的路径及锚点,不会请求全部外部网站,也不把外部链接未访问解释为可用。分享图片检查确认本地图片文件及格式签名,不衡量视觉设计。完整浏览器交互、线上性能与外部资源可用性仍需另行核验。
迁移记录 migration/inherited-broken-references.json 保留旧站的 31 项失效引用。维护清单 content/reference-repairs.json 将它们逐项分为 25 个 repairs 和 6 个 unresolved,每项都记录来源、证据及明确的目标或未解决原因。清单键为文章 id、HTML tag、attribute 与原始 url,不使用全局字符串替换或模糊标题匹配。
scripts/lib/reference-repairs.mjs 在正文渲染后修复确切的链接属性。原始 Markdown 与 content/legacy/ 快照保持不变;只有匹配清单的属性值改变,正文文字、代码、表格和其余标记继续沿用原快照。文章日后正常修改正文,原链接已不存在时,修复规则不会要求把它加回来。
- 24 个文章链接原本省略了文件名前缀;解码后的文件名与同课程中已经发布的对应文章完全一致,修复为其固定站内地址。
- 软件工程重点笔记中的
img/cpt13/29.png,同篇文章已有对应的完整 OSS 图片 URL;2026-10-14 对该原始 URL 的直接请求返回200 OK、image/png和 42,367 字节,因此将空链接指向原图。 - Hadoop/Spark 安装笔记的
img/spark/1.png至img/spark/6.png,现有静态资源、相关 Hexo 源码与部署目录中未找到;保留的部署 Git 全部 57 个本地提交中,文章日期目录与根资源目录下的这些精确路径均无记录。尚无证据确定原截图地址,因此保留未解决项,不用其他截图替代。该结论限于已经检查的本地档案。
发布检查只允许这 6 项在对应文章、标签、属性和原 URL 上继续缺失,并在结果中逐项输出原因与构建中的出现次数。其余失效引用,包括原先可以修复的 25 项和新增错误,都会使检查失败。未解决清单不能加入不在原迁移记录中的错误以绕过检查。
如果恢复到原截图,应先确认来源与原文对应关系,再把该项从 unresolved 移入 repairs,记录目标和核验依据并重新构建。原外部资源的可用性可能变化;改为本地保存时,应保留图片来源与原文件校验值。