其他安装方式
推荐安装方式是使用 github.com/pgsty/oink Hugo
Module。以下选项只改变 Hugo 获取同一份主题源码的方式,不会改变内容,也不会改变 Hugo-only 构建命令。
前提条件
所有方式都需要 Hugo Extended 0.160.1
或更高版本。Git 方式需要 Git,Hugo 模块需要 Go。消费站点采用任何一种方式都不需要 Node.js、npm、PostCSS 或 Autoprefixer。
选项 1:完整发布归档
完整离线归档包含主题、本地浏览器运行时、字体、许可证、NOTICE、vendor 清单和 checksum。它是网络隔离构建的首选输入,也是保留准确发行物最简单的方式。
把主题解压到站点的 themes/ 目录:
site/
├── hugo.yaml
└── themes/
└── oink/
配置如下:
theme: oink
解压前先校验归档 checksum。只能使用明确发布版本附带的归档,不要把本地组装文件表述为已经发布的发行物。
选项 2:Git submodule
submodule 会在站点仓库中记录准确的 OINK 仓库 commit:
git submodule add https://github.com/pgsty/oink.git themes/oink
git -C themes/oink fetch --tags
git -C themes/oink checkout THEME_REF
git add .gitmodules themes/oink
git commit -m "Add OINK theme at THEME_REF"
配置嵌套主题路径:
theme: oink
CI 必须在运行 Hugo 前初始化 submodule。请将 THEME_REF
固定为发布标签或不可变的 commit,不要让生产环境跟随 main。
选项 3:固定版本的 Git 克隆
如果托管平台要求构建输入包含完整主题树,或者站点需要随仓库提供已经评审的副本,可以使用克隆:
git clone https://github.com/pgsty/oink.git themes/oink
git -C themes/oink checkout THEME_REF
同样设置
theme: oink。请记录最终解析出的 commit,以及恢复克隆的流程。如果把这些文件提交到站点仓库,必须保留 OINK 的
LICENSE、NOTICE 和 VENDOR.json。
OINK 不以 npm 包形式发行。现有 Docsy npm 用户应遵循 npm 迁移指南。
选项 4:Hugo Module
把公开模块固定到发布标签或不可变 commit:
hugo mod get github.com/pgsty/oink@THEME_REF
hugo mod tidy
在 hugo.yaml 中导入:
module:
imports:
- path: github.com/pgsty/oink
本地开发主题时,请使用被忽略的 Go workspace,把站点模块与同级 OINK checkout 一起加入。
预览与验证
所有源码方式都使用相同命令:
hugo server --disableFastRender
hugo --gc --minify
请验证:全新生产构建能够在没有 node_modules
目录的情况下完成;本地资源能在配置的 baseURL
下正确解析;中英文页面与搜索索引都已经生成。
版本变更和覆盖审查请参阅更新 OINK。