使用 spacemacs 和 hugo 写博客

Spacemacs org layer 提供了对 Hugo 的支持。

工作过程:ox-hugo 把 org 文档转换为 Hugo markdown,Hugo 再将 markdown 转换为 html。

Hugo

安装

官方提供了 deb 安装包,可直接下载:

wget https://github.com/gohugoio/hugo/releases/download/v0.52/hugo_extended_0.52_Linux-64bit.deb
sudo dpkg -i hugo_extended_0.52_Linux-64bit.deb
sudo apt install python-pygments

搭建

使用 Hyde 主题

hugo new site notfound.cn
cd notfound.cn
git init
git add .
git submodule add https://github.com/spf13/hyde.git themes/hyde

配置

PygmentsCodeFences = true # Enable syntax highlighting with GitHub flavoured code fences
PygmentsUseClasses = true # Use CSS classes to format highlighted code

编译

hugo -s notfound.cn -d /var/www/notfound.cn

本地实时预览:

hugo server -D

Emacs hugo 配置

修改 spacemacs 配置,开启 org hugo 支持 Hugo support

(setq-default dotspacemacs-configuration-layers '(
  (org :variables
       org-enable-hugo-support t)))

Org 文件配置

ox-hugo 支持两种导出方式。

子节点树作为博客内容(推荐)

将一个子节点树作为一篇博客,可参考 One post per Org subtree (preferred)

博客文件目录结构:

.
├── content
├── content-org
│   └── posts.org
...

posts.org 头部添加(移除 \ ):

#+HUGO_BASE_DIR\: ../
#+HUGO_BASESECTION\: ./

posts.org 子节点添加:(移除 \

:PROPERTIES\:
:EXPORT_FILE_NAME\: ubuntu-emacs-and-hugo
:END\:

#+HUGO\: more

ox-hugo 导出时会使用 org 文件的部分信息,可参考 For subtree-based exports

** DONE 使用 spacemacs 和 hugo 写博客        :emacs:hugo:
   CLOSED: [2018-12-23 Sun 10:18]

Org 文件作为博客内容

可参考 One post per Org file

保存后自动导出 Auto-export on Saving

  1. 可配置目录下所有文件导出。在目录下创建文件 .dir-locals.el 并添加如下内容, content-org 目录下的文件都会被自动导出为 hugo markdown:

    (("content-org/"
      . ((org-mode . ((eval . (org-hugo-auto-export-mode)))))))
  2. 可配置单个文件自动导出(需要移除 \

    * Footnotes* COMMENT Local Variables                          :ARCHIVE:
    # Local Variables\:
    # eval: (org-hugo-auto-export-mode)
    # End\:
  3. 可配置单个文件不导出(需要移除 \

    * Footnotes* COMMENT Local Variables                          :ARCHIVE:
    # Local Variables\:
    # eval: (org-hugo-auto-export-mode -1)
    # End\: