在前文 博客写作工作流 中我提到过一些关于博客评论系统的选择,简单来说就是弃用了 disqus, 选择了基于 GitHub issue 的评论方案,而由于 GitHub 之前 OAuth 鉴权粒度不够细,基于 gitalk/gitcoment 的方案会导致在博客当前页面评论登陆 GitHub 时提示的权限有点多,比如读写权限。新的基于 GitHub App 的方案如 utterances 1.0 就会好很多了。但这种方式对于非知名公司/个人博主来讲,我是不敢随便去让这种 app 接入的。基于同样的理念,我找到了 wzpan 的 wzpan/comment.js 中文文档, 这种方案将鉴权完全转移至 GitHub 上控制,安全感会好很多。稍显麻烦的是会有一个跳转而不是直接在本页评论。下面我详细介绍一下 Hugo even 下的如何使用 comment.js

由于目前还未向 even 发起 PR, 所以现在想使用的话可以直接使用我 fork 改过的 ==> billryan/hugo-theme-even, 具体配置同 comment.js 要求,你可以参考我的 blog/config.toml, 主要是一些如 owner, repo, token 的设置。对 comment.js 有需求的可以留言,我可以尝试向 even 发起一个 PR 合并到官方去。

核心配置如下:

  [params.comment]           # comment is a comment system based on GitHub issues. see https://github.com/gitalk/gitalk
    owner = "billryan"              # Your GitHub ID
    repo = "blog"               # The repo to store comments

看完 comment.js 的文档后移植起来其实是非常简单的,在这个过程中我还参考了 feat: add gitalk, 加入了一些公开的 CDN 资源,在 comment.js 的基础上增加了 .btn 的样式,这个样式参考了 GitHub issue. 另外我默认开启了 highlight 和 spin 这两个特性。