终于从 Jekyll 迁移到 Hugo 了。
碰到了不少头疼的小问题,还好有 Google,但即使有 Google,还是走了很多弯路,回头看,还是得仔细读官方文档原文。以下是我碰到的麻烦以及帮我解决问题的链接:
1. MD 文件 front matter 的批量转换
虽然不需要从头造轮子,但是用到的Python脚本也没有那么容易顺利跑,硬着头皮看各种莫名其妙错误代码。
2. Markdown 中的 javascript 被忽略
与Jekyll使用的 kramdwon 不同,Hugo 使用的 Markdown 解释器默认会对 HTML、javascript 会直接忽略。这导致我的 instafeed 页面以及文章里的 Google 地图无法显示。
Hugo 目前(0.69.2) 默认的 Markdown 解释器是Goldmark,之前版本(0.60之前?)默认使用的是 Blackfriday。
Hugo 提出 shortcodes 来解决,文档中有这样的描述:
Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video
<iframes>
) to Markdown content. We think this contradicts the beautiful simplicity of Markdown’s syntax.Hugo created shortcodes to circumvent these limitations.
读了这段话之后的我就开始阅读关于 shortcodes 的文档以及博客。说实话,对于几乎算是零基础的我来说,很多地方读得很费劲。我只是想显示一个特定页面而已,却读了很多如何去搞一个通用的 shortcodes 的说明。
除了官方文档以外,这三篇是对我最有帮助的:
尤其是第二、三篇,完美解决我的痛点。
但是,总有但是。使用第三篇的中方法解决问题之后我又一次读了Goldmark 相关的段落。
注意到 Goldmark 有一个 unsafe 项:
unsafe
By default, Goldmark does not render raw HTMLs and potentially dangerous links. If you have lots of inline HTML and/or JavaScript, you may need to turn this on.
所以实际上还有一个简单粗暴地解决我需求的方法:在config.toml
中令unsafe = true
,即:
[markup]
[markup.goldmark.renderer]
unsafe = true
实测有效。
3. 作为 Github Pages 发布
4. 页面显示不正确
正确push到github仓库之后,打开username.github.io,却发现网页显示不正确。原因是配置文件里的baseURL我是按insideout.top设置的,所以在根目录下还需要一个CNAME文件,里面填上baseURL域名。问题解决。
5. disqus 的配置
Diary theme 默认的评论系统是gitalk。但事实上Hugo已经内置支持disqus:
- 把正确的disqusShortname放在正确的位置。(不应放在
[params]
之下) - 给Hugo添加disqus评论服务
- Hugo Doc - Comments
6. 与之前 Jekyll 的 Permalinks 格式保持一致
文章迁移过来了,评论也得迁移过来。永久链接的格式保持一致是最便捷的办法。这篇博客非常有帮助:
jekyll-hexo-hugo 互相迁移时关于永久链接的问题
Last modified on 2020-05-08