Skill · 本地预览 + 部署前自检
何时用:想在 push 前看一眼最终效果;或者想看看 deploy workflow 报的 warning 都什么意思。
解决什么:把"本地预览"和"导出审计"两件事说清——一个解决"我写出来到底长啥样",一个解决"我写的东西有没有死链"。
一、本地预览(gobog-obsidian 插件)
前置条件:本地编了 gobog 二进制。
git clone https://github.com/sbraveyoung/gobog ~/code/gobog
cd ~/code/gobog
make build # 产出 ./gobog
配置插件:
- 设置 → Gobog Sync → Local preview
gobog binary path=/home/<you>/code/gobog/gobogtheme path= 留空(默认<bin-dir>/themes/minimal)
用:命令面板 → Gobog Sync: Preview blog locally
它会:
- 把当前 vault 的
Blog/目录作为 source; - 写一个临时
gobog.toml到 tmpdir; gobog -export到<vault>/.obsidian/plugins/gobog-obsidian/preview/;- 用
file://URL 把渲染结果在系统默认浏览器里打开。
贴心:如果你当前打开的是某篇文章(且在 blog 文件夹下),它会直接跳到这篇文章的渲染页,不需要你从首页往里点。
二、部署前自检(github.io 的 deploy workflow)
scripts/check-export.sh 在每次 deploy 跑 gobog -export 之后自动跑一遍。三类警告:
1. dead internal link
/post/X 或 /image/X 在 HTML 里出现,但导出树里没那个文件。
::warning::dead internal link: /post/cf4cc8e2/e66fb74
常见原因:
- 文章里硬写了
/post/<旧 id>,那篇文章已经被删了 / 改了 url。 - 老 wikilink 指向已不存在的笔记。
- 手敲 markdown 链接的时候 typo 了。
修法:在 vault 里 grep 一下那个 URL,找到引用它的 .md,要么改对,要么删掉。
2. orphan resource
image/X 文件存在,但没有任何 HTML 引用它。
::warning::orphan resource: image/旧截图.png
常见原因:
- 某篇文章删了,引用的图片留下了。
- 早期上传过但从未引用的素材。
修法:要么找一篇文章把它用起来,要么 git rm。两种都行——警告不阻断发布,留着只是为了让你知道你在多送几 KB 字节。
3. suspicious URL
HTML 里出现了 file:///、localhost、127.0.0.1 这种只在你本地有意义的 URL。
::warning::suspicious URL leaked into HTML: file:///D:/temp/...
常见原因:从 Typora / 别的本地编辑器复制粘贴时把本地路径带进来了。
修法:在 vault 里搜那个 URL,替换成线上路径或者改成 /image/...。
注意:<!-- ... --> HTML 注释里的可疑 URL 不会触发警告(脚本是 comment-aware 的)。
三、本地手动跑自检
不想等 deploy?本地直接跑:
# 先用插件预览一遍生成 _dist
# 然后:
bash ~/code/sbraveyoung.github.io/scripts/check-export.sh \
~/<vault>/.obsidian/plugins/gobog-obsidian/preview
输出格式跟 GH Actions 里一模一样,只不过没了 ::warning:: 前缀的 Actions 渲染。
四、把警告升级成 fail(可选)
scripts/check-export.sh 默认只 warn。如果你想让 dead link / orphan 直接阻断 deploy:在 github.io 的 deploy.yml 里把 CHECK_EXPORT_FATAL 设成 '1':
- name: Sanity check rendered output
env:
CHECK_EXPORT_FATAL: '1' # 改这里
run: bash scripts/check-export.sh _dist
我的建议是保持默认 warn——少数派审稿员的角色让自动化干,最终决定权留给自己。