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

相关推荐
清平乐的技术专栏2 小时前
新电脑验机工具介绍及避坑指南
运维·电脑
skywalk81632 小时前
为什么Linux系统里用户id和组id不一样?怎么改成一样呢?
linux·服务器
HIT_Weston2 小时前
72、【Ubuntu】【Hugo】搭建私人博客:Git 下载方式对比
linux·git·ubuntu
xixiyuguang2 小时前
nginx tar离线安装 ubuntu22.04
运维·nginx
天骄t2 小时前
OSI与TCP/IP:网络协议栈深度解析
linux
丁丁丁梦涛2 小时前
nginx解决域名代理到IP+端口的平台静态资源和接口地址问题
运维·tcp/ip·nginx
无事好时节2 小时前
Linux 进程通信:信号与共享内存详解
linux·网络·网络协议
春日见2 小时前
如何提升手眼标定精度?
linux·运维·开发语言·数码相机·matlab
weixin_462446232 小时前
使用 Ubuntu 构建 code-server Docker 镜像的完整指南
linux·ubuntu·docker