接上篇 用Org Mode + Hugo写博客,并通过Github Action自动部署到Github Pages

痛点

代码仓库里会同时保存org文件和markdown文件,markdown文件其实是中间产物,不想保存。

如何解决

首先,Emacs是可以执行Emacs Script的,写个脚本,然后在Github Action里执行即可。Emacs环境哪里来?purcell大神已经准备好了。

废话不多说,直接上代码。

嵌入Gist

1
2
3
#+BEGIN_EXPORT html
<script src="https://gist.github.com/superbear/28fb0dbbca505b5d7d83e10e35b822a4.js"></script>
#+END_EXPORT

等等,直接用markdown写是不是就没有这个痛点了?嗯😄。

存在的问题

目前是全量导出,找到指定目录下的全部org文件,然后转成markdown文件。 这样每提交一篇文章,就需要处理全部存量文章。另外,全部文章的更新时间都会跟着变,这个和HUGO_AUTO_SET_LASTMOD这个property设置有关。详见:ox-hugo last modified 。待改成增量导出。

遇到的问题

1、org导出markdown文件了,但未生成静态文件
原因:时区问题。Github Action是按UTC时间执行的,而文件的发布日期是东八区的,这样Hugo可能会看到发布日期还未到,就不处理了1
解决方案:修改Github Action job的时区,可一并解决文件修改时间不对的问题;或修改Hugo运行时的配置,增加–buildFuture参数。

参考文档

using ox-hugo without duplicating content in the repository

Github action which installs a given Emacs version

如何编写EmacsScript