将 Obsidian 和 Hugo 结合使用,实现内容管理和网站呈现分离

Posted by Eric Jin on 2023-04-02

在 Hugo 中,contentDir 参数则指定 Hugo 应该从哪个目录获取 Markdown 文件。默认情况下,Hugo 会从 content 目录中获取 Markdown 文件。但是,如果你希望从其他目录获取 Markdown 文件,可以使用 添加contentDir 配置信息或者--contentDir 参数。

publishDir 是一个配置选项,用于指定生成站点时将所有静态资源(如 HTML、CSS、JS、图片等)发布到哪个目录下。默认情况下,这个目录是站点根目录下的 public 文件夹。

通过设置 publishDir,我们可以将静态资源发布到指定的目录中,方便我们进行网站部署。同时,在 Obsidian 和 Hugo 结合使用的情况下,我们也可以通过将 Obsidian Vault 与 Hugo 的 publishDir 相结合,实现在 Obsidian 中进行文章编辑,然后直接生成静态网站并发布到指定目录的目的。

配置 contentDirpublishDir

我们可以在 Hugo 的配置文件中使用 contentDir 字段指定 Hugo 应该从哪个目录获取 Markdown 文件。例如,如果你想让 Hugo 从 obsidian 文件夹中获取 Markdown 文件,则可以在配置文件中添加以下行:

contentDir = "obsidian/blog"

这会将 Hugo 的 Markdown 文件路径设置为 obsidian 文件夹,而不是默认的 content 文件夹。当你运行 hugo 命令时,Hugo 将根据这个新路径来查找 Markdown 文件,生成网站时也会生成到对应的目录中。

如果我们想将生成的静态文件发布到指定的目录中,我们还需要在配置文件中指定 publishDirpublishDir 是一个 Hugo 配置选项,它用于指定生成站点时将所有静态资源(如 HTML、CSS、JS、图片等)发布到哪个目录下。默认情况下,这个目录是站点根目录下的 public 文件夹。如果你想将静态文件发布到 docs 文件夹中,则可以添加以下行:

publishDir = "docs"

在 Obsidian 中编辑 Markdown 文件

在配置文件中指定好 contentDirpublishDir 后,我们可以在 Obsidian 中编辑 Markdown 文件。我们将 Markdown 文件保存在 Obsidian Vault 的 obsidian/blog 文件夹中,这样 Hugo 就会从这个文件夹中读取 Markdown 文件。

在 Obsidian 中编辑并保存 Markdown 文件后,只需要运行以下命令,Hugo 就会使用 Obsidian Vault 中的 Markdown 文件来重新生成静态文件:

hugo --destination /path/to/hugo/publishDir

这样做还有一个好处是可以避免 Git 冲突,因为只需要在 Obsidian 中管理一份 Markdown 文件。

通过以上配置和操作,我们就实现了在 Obsidian 中管理内容,同时 Hugo 可以将静态文件生成到指定的目录中,实现了内容和呈现的分离。

有我提出结合需求,chat gpt 给出解决方案,最后我把所有的解决方案放在一块一起发给chat gpt,让他帮我整理成文章