使用 ox-hugo 构建 Hugo blog 工作流

必备条件

  • 了解 Emacs1 的基本操作
  • 熟悉 Hugo2 使用、Orgmode3 语法

正文

ox-hugo 是一个文档转换工具,它能根据配置,将 Org 文件转为 md 文件。

它有两种组织方式:一种是「一篇文章对应一个 Org 文件」,另一种是「一篇文章对应一个 Org 子树4」。官方文档推荐后一种,我觉得可能是因为后一种只需要一个 Org 文件,管理起来很方便。但是,对于我来说,我已经有超过 700 篇博客,都用一个文件管理并不现实。所以,我选择「一篇文章一个 Org 文件」的方式。

Emacs 安装包有两个官方仓库:MELPA 和 MELPA Stable,后者中的包是稳定版本(v0.8),前者是最新版。稳定版本的 ox-hugo 缺失了功能5,不能使用 org-hugo-auto-export-mode 。这个 mode 可以在保存 Org 文件时自动生成对应的 md 文件。设置办法6

在博客根目录下,新建文件 .dir-locals.el

    (("content-org/"
      . ((org-mode . ((eval . (org-hugo-auto-export-mode)))))))
    ;; content-org 是 Org 文件的存放地

在每个 Org 文件的开头都需要进行一定设置:

    #+HUGO_BASE_DIR: ..
    #+HUGO_AUTO_SET_LASTMOD: t
    #+TITLE:
    #+DATE:
    #+HUGO_TAGS:

头 2 行是所有文件共有的可以放在一个文件 hugo_setup.org,然后所有文件都引用它。

现在每个 Org 文件的配置:

    #+TITLE:
    #+DATE:
    #+HUGO_TAGS:

接下来就能够和往常一样写文章,并发布了。

一些使用技巧

使用 yasnippet7 作为模板应用,使用关键字自动将配置输出。


参考资料

  1. https://ox-hugo.scripter.co/
  2. https://www.xianmin.org/post/ox-hugo/
欢迎通过「邮件」或者点击「这里」告诉我你的想法
Welcome to tell me your thoughts via "email" or click "here"