思考啊SIKAOA
10 分钟阅读幻灯片

jianfei-blog v3.1.0 升级说明

说到这次更新,jianfei-blog 从 v3.0.0 升级到 v3.1.0,修了几个老毛病,还加了个挺实用的新功能。

第一个坑:本地图片上传后看不见

以前用 upload-md 上传 Markdown 文件时,如果文章里写了 ![](imgs/chapter_01.png) 这种本地图片引用,线上是看不到的。得手动复制图片、改路径、再部署三步走。

现在好了
upload-md 自动识别这些本地图片,按 .md 文件所在目录解析相对路径,把图片搬到 public/images/{postId}-{hash}.{ext},顺便把 Markdown 里的链接也替换了。上传完直接 run 一次 deploy 就行。

到了这个点,base64 图片也能自动处理了

之前 publish-go 发布含 base64 图片的文章时,会把整段 base64 文本塞进 posts.json,结果 JSON 变大、构建变慢,体验拉满。

现在不这样了
publish-go 在部署前先检查所有文章,不管是 HTML <img> 还是 Markdown 的 ![alt](data:...) 格式,统统提取出来变成独立文件,然后再跑 vercel --prod

回到正题,图片提取逻辑统一了

以前 extract-images 只认 HTML 的 <img src="data:...">,对 Markdown 的 base64 图片完全没反应。

现在改好了
新增了一个核心模块 scripts/lib/extract-images-core.js,能同时处理两种格式。三个地方都用它——extract-imagespublish-goauto-deploy-watcher,再也不用重复写逻辑了。

自动部署守护进程也升级了

以前 watcher 每 5 分钟扫一遍新文章自动部署,但图片还是没提取,导致有些页面加载失败。

现在它会主动干活了
每次发现新文章,部署前先调用图片提取逻辑,确保内容完整。还加了个启动脚本 ./scripts/start-watcher.sh,支持前台/后台运行,还能自动加载 .env 环境变量,方便多了。

新增功能:可以直接部署 HTML 原始网页!

最爽的是,现在可以部署纯 HTML 页面,甚至是一个小站点(多个 HTML 文件)。

# 部署单个 HTML 文件
jianfei-blog deploy-html ~/Downloads/my-page.html --title "我的网页"

# 部署一个目录(多页站点)
jianfei-blog deploy-html ~/Downloads/my-site/ --title "我的站点"

行为说明

  • 单个 HTML → 放到 public/html-pages/{slug}/index.html
  • 目录 → 整个拷贝过去,保持 CSS/JS/图片路径不变
  • 同时在 Sanity 创建文章记录,列表里显示 🌐 标识
  • 自动执行 vercel --prod 部署

访问方式

  • 独立页面:https://sikaoa.com/html-pages/{slug}/
  • 博客文章页:https://sikaoa.com/post/{id}/(带 iframe 预览 + 新窗口打开按钮)

前端适配也跟上了

  • 列表页:标题前加 🌐,摘要显示 “🌐 独立网页 — ...”
  • 详情页:标题下方蓝色提示框,有 “在新窗口打开” 按钮
  • 正文区域用 iframe 加载原始 HTML,体验几乎原生

文件改动清单

你看这波更新其实没动太多,主要是几个关键模块:

scripts/
  lib/extract-images-core.js          # 新增:可复用图片提取核心
  cmds/extract-images.js              # 简化:调用 core
  cmds/upload-md.js                   # 新增:本地图片自动处理
  cmds/publish-go.js                  # 新增:部署前自动提取图片
  cmds/deploy-html.js                 # 新增:HTML 网页部署命令
  auto-deploy-watcher.js              # 新增:部署前提取图片
  start-watcher.sh                    # 新增:守护进程启动脚本
src/
  lib/post-types.ts                   # PostCardData 增加 source 字段
  app/page.tsx                        # 传递 source
  app/search/page.tsx                 # 传递 source
  components/PostCard.tsx             # html-deploy 显示 🌐
  components/PostContent.tsx          # html-deploy iframe + 跳转提示
.kimi/skills/jianfei-blog/SKILL.md    # 文档更新至 v3.1.0

升级后的命令速查表

命令说明
publish <title> [content]发布文章到 Sanity
publish-go <title> [content]发布 + 自动提取图片 + 部署
upload-md <路径>批量/单个 .md 上传(自动处理本地图片)
deploy-html <file|dir>部署 HTML 原始网页
delete <id>|--last|--title删除文章
edit <id> <旧文本> <新文本>编辑文章
list [--limit N]列出文章
extract-images提取 base64 内嵌图片
deploy部署到 Vercel
stats博客统计