73、【Ubuntu】【Hugo】搭建私人博客:Hugo&PaperMod 兼容问题

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【Hugo】搭建私人博客:Git 下载方式对比

分析了用 git submodule 在这种多仓管理中的好处,然后配置了 hugo.toml 文件,并启动 hugo server -D 进行预览,下面继续分析

搭建私人博客

上篇 blog 提到,在终端输入

bash 复制代码
hugo server -D

可以预览博客网站

这里有个 -D 选项说下 ,-D--buildDrafts 选项会让 Hugo 在本地预览时,也构建显示那些被标记为 draft 草稿的文章,在 Hugo 中,每篇文章的前置元数据里可以设置该文章是否为 draft 草稿,比如

如果 draft: true在默认情况下,Hugo 构建网站时,会主动忽略这篇文章,除非加了 -D 选项,这篇草稿才会被包含进来

OK,输入预览命令之后,发现如下报错

提示 PapermMod 主题应匹配 Hugo v0.146 版本,终端输入

bash 复制代码
hugo version

可以看到 Hugo 版本为 v0.123

这是因为 Hugo 是通过 Ubuntu/Debian 官方仓库安装的,官方仓库更新比较慢,而 PaperMod 主题则是直接克隆了 Github 上的最新版本,所以有兼容性问题,解决有两种方式:

  • Hugo 升级(用 Github 最新版本)
  • PaperMod 降级

这里懒得去升级 Hugo 了,先把 PaperMod 降级用起来,后面再去升级 Hugo

在终端输入

bash 复制代码
cd themes/PaperMod/
git tag

可以看到最新的 tag 是 v8.0,也是当前正在用的

终端输入

bash 复制代码
git checkout v7.0

将 PaperMod 版本降级为 v7.0

回到主仓库,再次输入 hugo server -D,可以看到运行成功

在主仓库输入

bash 复制代码
git status

可以看到主仓库对应的 PaperMod 提交更新了

接着输入

bash 复制代码
git add .
git commit -m "PaperMod switch to v7.0"

将主仓库中 PaperMod 对应的版本切换为 v7.0

输入 git submodule,可以看到主仓库关联的 PaperMod 已经变成了 v7.0

接着在浏览器中输入 localhost:1313,可以看到博客站点已搭建成功

这里 localhost:1313 就是之前在 hugo.toml 配置文件中设置的 baseURL

OK,博客站点搭建成功,下面在里面添加第一篇博客

在 Hugo 项目根目录下,终端输入

bash 复制代码
hugo new posts/first-blog.md

可以创建新文章,对应 URL 路径是 /posts/...,当然也可以用 blog/articles/ 等目录

可以看到 Hugo 自动创建 content/ 文件夹,并在里面创建 posts/ 路径,其实不管是 content/posts/,还是 content/blog,Hugo 都能正确生成页面,Hugo 不关心目录叫什么,它只按 content/ 下的结构生成网站

PaperMod 主题默认只显示第一次使用 hugo new xxx/blog.md,将 xxx/ 路径下的文章显示在首页,这是 PaperMod 主题的行为,不是 Hugo 的限制,Hugo 本身支持任意内容目录,其设计理念是约定优于配置,不限定死目录名

如果后面想用别的目录名,比如 hugo new yyy/blog.md,此时 PaperMod 主题不会显示 yyy/ 路径下的文章,除非在 hugo.toml 配置文件中显示配置,比如添加参数 mainSections = ["xxx", "yyy"]


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog

相关推荐
学嵌入式的小杨同学3 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
EverydayJoy^v^3 小时前
RH134学习进程——十二.运行容器(1)
linux·运维·容器
syseptember3 小时前
Linux网络基础
linux·网络·arm开发
b***25114 小时前
电池组PACK自动化生产线的关键流程与核心优势
运维·自动化
zl_dfq4 小时前
Linux 之 【多线程】(线程的概念、Linux中的线程、页表)
linux
郝亚军5 小时前
如何在Ubuntu和win10/11之间通过samba访问对方的文件
linux·服务器·ubuntu
曦云沐5 小时前
【避坑指南】Ubuntu更新报错“Repository is not signed”的快速修复
linux·ubuntu·docker
哲伦贼稳妥5 小时前
职场发展-遇到以下情况请直接准备后手吧
运维·经验分享·其他·职场和发展
带土16 小时前
10. .out文件
linux
Exquisite.6 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql