Hugo Modules 主题安装和管理:以 Docsy 为例
Categories:
少于1分钟
Hugo主题安装方式
目前主题的安装方式是怎样的?例如远程主题、或类似Jekyll的gem-based,或还有其他方式。为何在本站根目录中没有发现hugo建站相关的程序文件和theme 主题目录?
我们寻找Hugo的配置文件的位置,为了查找静态页面所保存的文件目录publishDir=public
的配置,可能有几个文件与该配置相关:
config/_default/config.toml
config/_default/config.yaml
config/_default/config.json
config/production/config.toml
config/production/config.yaml
config/production/config.json
如果不采用docker方法安装,需要删除docker相关文件吧,包括哪些文件清单?
A: 通过Hugo Modules的方式安装的,配置文件就是hugo.yaml,没必要去改静态页面所保存的文件目录,部署是自动的,不需要手动操作,docker文件可以删除,不影响使用。
从go.mod 和 hugo.yaml 文件可以看出来,通过 Hugo Modules 引入了 Docsy 主题(版本 v0.11.0)。由于主题文件并未直接放在项目目录中,而是通过模块系统加载,因此无法直接在项目目录中看到 themes/docsy 文件夹。
go module 安装和管理
Hugo Modules 使用了 Go 的模块系统来管理主题依赖。从配置文件可以看到:
- hugo.yaml 中声明了主题模块:
module:
imports:
- path: github.com/google/docsy
- go.mod 中指定了具体版本:
require github.com/google/docsy v0.11.0
go.mod 是用于 Go 编程语言的模块依赖管理文件。它指定了模块的名称和依赖项的版本,确保在构建时使用正确的库版本。
请注意,在 Markdown 中的代码块标记里,你应该使用语言代码来高亮代码。对于 go.mod
文件,使用 go
作为代码块的标记是适当的。
go module 目录
通过以上方式安装的主题,我们可以找到主题实际被存储的缓存目录,显示 Hugo 存储其缓存(包括模块)的完整路径。
hugo-docsy % hugo config | grep cacheDir
dir = ':cacheDir/:project'
dir = ':cacheDir/:project'
dir = ':cacheDir/:project'
dir = ':cacheDir/:project'
dir = ':cacheDir/modules'
hugo-docsy % ls ~/Library/Caches/hugo_cache/
PaperMod blog hugo-paper modules
Hugo 从本地缓存目录加载主题,在 macOS 上,Hugo 的缓存通常位于:
cd ~/Library/Caches/hugo_cache/modules/
ls ~/Library/Caches/hugo_cache/modules/filecache/modules/pkg/mod/github.com/google/docsy/@v/
@v % ls
list v0.11.0.lock v0.11.0.zip
v0.11.0.info v0.11.0.mod v0.11.0.ziphash
要查看 Docsy 主题的实际文件内容,需要解压缓存中的 v0.11.0.zip 文件。主题文件在:
这个目录包含了完整的 Docsy 主题源码,包括:
- layouts 模板
- assets 资源
- static 静态文件
- i18n 翻译文件
- 等所有主题组件。
如果你决定爆改这款主题,那么可以在以上的缓存目录中找到zip文件,复制出来解压缩,将需要更改的文件复制出来到项目相应的子目录中,然后依据个人喜好爆改它。
go.mod 方式的优点:
- 主题作为模块依赖管理,版本可控
- 主题文件不直接存在于项目中,保持项目结构清晰
- 可以同时使用多个主题模块
- 主题更新只需要修改版本号
- 多个项目可以共用缓存的主题文件
这是 Hugo 推荐的现代主题管理方式,比直接把主题文件放在 themes 目录更灵活和规范。