🌝

关于 Minima 这个主题

Posted at — Nov 13, 2021

距离 Minima 的第一次代码提交已经过去 3 个月了,中间经历了很多次迭代,有小功能的添加,也有界面的大改,从来没有哪个项目让我坚持维护了这么久,这可能就是社区驱动的优势(虽然可能只有一两人在用,哈哈)。不过,重要的不是有几个人在用,而是时不时会受到邮件或是 GitHub 发来的 issue 通知,告知我哪里有 bug 或是希望我加个什么新功能,这时候就会让我有维护下去的动力。不过他们可能只是在尝试不同的主题,并不会真的使用我的,就像我最开始玩自建博客的时候一样,花很多时间来挑主题,结果最后还是自己写了一个,嚯嚯。

minima-github

截止到现在,Minima 只获得了 12 个 star 和 11 个 fork,哈哈有点惨,不过有人会 fork 我是没想到的,估计是想自己拿去改改吧。上个月收到一个 PR,帮我改了一个首页的 bug,我看代码没问题就直接给合并了(原来 PR 被合并后就能自动成为 contributor)刚刚去 他主页 看了看,还在用我的主题,不过他稍微改了改样式,哈哈。

Minima 原本是 Hexo 的一个主题,因为其实一直都想写个 Hugo 主题来用,所以就去 Hexo 的 主题官网 找了个喜欢的来抄了抄 UI,于是就看到了 Minima。一是因为我本来就喜欢极简风格的主题,二是这种风格的界面好实现,没有很花哨的动画。其实 Hugo 的主题很多都是极简的(因为 Hugo 是 Go 语言开发的,所以很多主题作者可能不是前端出身,也就没有很多很炫的 UI)。不过我觉得 Hugo 的极简主题还是差了点设计感,也有些过于简单了,一直没找到能满足我需求的主题。

目前,我的 Hugo 版 Minima 仍保留了原版 Minima 的所有功能,包括暗黑模式、分类和标签索引等,另外还增加了 KaTeX 和 Mermaid 支持,因为我很多时候写的东西里面需要显示公式和图表,在 示例网页 可以查看效果。另外原版 Minima 的 VSCode 风格的代码高亮是我见过做的最好的,所以当时花了很久,才将代码高亮调得和原版比较接近,因为在代码关键字识别准确度上 Hugo 还是比 Hexo 要弱一点。

1
2
// code highlighting
printf("%s\n", "Hi, Minima.")

关于评论插件,保留了原版支持的 Disqus,新增了 utterancesOvO。OvO 是我自己写的一个匿名评论插件,但是因为后端没有有效解决一些安全问题就暂时鸽置了。在添加 utterances 插件的时候,遇到了一个坑,因为 utterances 本身的颜色是预设的,页面渲染后就不能改变了,而我们希望的是,当页面处于深色模式时,utterances 也自动变为深色,页面处于明亮模式时,它能自动变回白色。

最开始以为 utterances 和我的 OvO 一样,是通过暴露 CSS 变量来让使用方更改颜色,挣扎了一阵,最后在 utterances 仓库的 issue 中找到了 解决办法。utterances 是通过在宿主页面添加一个 iframe 来显示评论的,所以它提供了 postMessage 接口来动态改变颜色。所以遇到不能解决的问题可以去对应项目仓库的 issue 看看,可能有人问过类似的问题(开源万岁!)

当然这过程中还有遇到其他问题,但总的来说,这个主题其实很普通,甚至有点拉胯,但是对于我这种没参与过协同开发开源项目的人来说,是一段有意义的经历。