这次把博客从 Hexo 切换到 Astro 的过程,记录一下整个迁移过程过程。当然,过程中也踩了不少坑,一并记录一下以帮助大家少走弯路。
为什么要换?
起因还得是从我为什么要弄另一个博客说起。
当时我还没有玩 Telegram,又觉得把生活和技术放一块不太好(虽然主博客没有多少硬核内容就是了?)于是就打算新建一个博客。基于上一个博客用 Hexo (不怎么)良好的体验,于是就决定下一个博客接着用 Hexo.
和严肃的技术类博客不同,生活类博客我想怎么样就怎么样。然后再接触到 shoka 主题后就开始一直用这个主题。
有一个点是 shoka 主题已经年久失修了,于是就配合着其他人的魔改教程一边添加新的功能如 Waline 评论和本地搜索,一边小心翼翼地升级依赖确保没有那么破旧。虽然我中途试过 hexo-theme-shokax 和别人的 hugo-theme-shoka fork,但是有大大小小的问题,遂作罢。
但是还是挂了
三月的一天,我看到别人的 fork 的 shoka 主题有一个修复滑动的问题,我原本想着看看我主题有没有就打开发现一直在转圈圈。
然后再 gpt 的帮助下开始禁用 cdn,使用本地字体,甚至!我还回滚到了部署当时还好好的时候。但是!还是没用。
然后我打算放弃了。
然后我就发现了一个类似 shoka 的 astro-koharu,于是就想着迁移过去。
正如我之前写的文章《Hexo 真的死了吗?》那样:
讲的是lz233因为觉得hexo社区不太活跃便将自己的博客转移到Astro上的事。
别人是主动迁移,我是直接因为博客用不了了我才被动迁移的。
开始迁移
正如上面说的,我是被动迁移的,且我对 astro 的特性和语法一概不知。我学 TypeScript 的唯一目的是为了 TypeScript action。是的,不是为了前端,就是为了一个明明可以用 Shell 或者 Dockerfile 编写的 Github Action. 于是我就想了一个省事的方法,选择了 Vibe Coding。用的是 glm5. 直接口头下达了迁移的指令。然后跑了不到两个小时吧,告诉我迁移成功了。
我 pnpm dev 一看,差点晕了过去。
- 字体没有自适应大小
- latex 公式完全不支持
- 中文搜索不太行
- 静态资源直接 404
虽然 vibe 哪哪不太行,但不得不承认。照猫画虎比起从头看教程、手动便宜、调试简单多了。
然后我就把这些问题丢给了 gpt。gpt 告诉我 latex 公式不支持是因为在 astro 中需要用 $ 块包裹,静态资源需要丢到 public 文件夹而且不支持相对路径。
我把反馈丢回了 glm,让它修复这些问题。经过几轮的对话后,glm 把图片迁移到了public 文件夹,修改了 latex 公式显示,添加了 title 自适应大小,又把原来 shoka 的一点小巧思如离开标签页自动更换选项卡顶部标题给迁移了过来。
问题
- 1.生产文件夹不同 hexo 用的是 public 而 astro 用的是 dist 的但是 glm 迁移的时候没有把 gitignore 改过来,然后我又不巧地用了 squash commit 和 hard reset 试图减少 git 仓库大小于是我的图片丢!失!了!
最后通过 github 仓库的 activity 功能找回来的。
-
pnpm dev 下搜索无结果问题 这个貌似无解。pagefind 用的是本地索引。需要用 pnpm build 构建产物才能搜索,作罢。
-
中文搜索分词问题 如搜索“指对放缩”搜索结果会出来带“指”的内容,貌似是 PageFind 上游的问题,可通过“指 对 放缩”解决,但是“指 对 放 缩”又会出现搜索结果出现“放”和“缩”的问题,理论上可以换一个搜索策略实现,但是 llm 改的时候还是没啥效果,作罢。
总结
总的来说,Astro 可用但仍然存在不少问题,不适合追求稳定的用户,请酌情考虑迁移。但是如果你能成功解决这些问题,那么 Astro 确实比 Hexo 好的多了多。
希望这篇记录能帮到同样在使用 / 考虑迁移到 Astro 的朋友。
喜欢的话,留下你的评论吧~