Hugo 开发
为 Hugo 的开发做出贡献。
介绍
你可以通过以下方式参与 Hugo 项目:
- 在 forum 上回答问题
- 改进 documentation
- 关注 issue queue
- 创建或改进 themes
- 修复 bugs
请将文档问题与拉取请求提交到 documentation repository。
如果你有任何增强或新功能的想法,在 forum 的"Feature"类别中创建一个新主题。这将帮助你:
- 确定功能是否已存在
- 衡量兴趣
- 完善概念
如果有足够的兴趣,create a proposal。在项目负责人接受提案之前,不要提交拉取请求。
有关贡献 Hugo 的完整指南,请参阅 Contribution Guide。
先决条件
要从源代码构建 extended 或 extended/deploy 版本,你必须:
- 安装 Git
- 安装 Go 1.24.0 或更高版本
- 安装 C 编译器,GCC 或 Clang
- 按照 Go documentation 中的描述更新
PATH环境变量
请参阅这些 detailed instructions 了解如何在 Windows 上安装 GCC。
GitHub 工作流
本节假设你对 Go、Git 和 GitHub 有工作知识,并且对命令行操作感到舒适。
使用此工作流创建和提交拉取请求。
- 步骤 1
- Fork project repository。
- 步骤 2
- 克隆你的 fork。
- 步骤 3
- 创建一个带有描述性名称的新分支,包括相应的问题编号。
对于新功能:
git checkout -b feat/implement-some-feature-99999对于 bug 修复:
git checkout -b fix/fix-some-bug-99999- 步骤 4
- 进行更改。
- 步骤 5
- 编译和安装。
编译和安装标准版本:
go install编译和安装 extended 版本:
CGO_ENABLED=1 go install -tags extended编译和安装 extended/deploy 版本:
CGO_ENABLED=1 go install -tags extended,withdeploy - 步骤 6
- 测试你的更改:
go test ./... - 步骤 7
- 使用描述性的提交消息提交你的更改:
- 在第一行提供一个摘要,通常为 50 个字符或更少,后跟一个空行。
- 以包名开始摘要,后跟冒号、空格和以大写字母开头的更改的简要描述
- 使用命令式现在时
- 请参阅 commit message guidelines 了解要求
- 可选择提供详细描述,每行 72 个字符或更少,后跟一个空行。
- 添加一个或多个"Fixes"或"Closes"关键字,每个关键字单独一行,引用此更改解决的 issues。
例如:
git commit -m "tpl/strings: Create wrap function The strings.Wrap function wraps a string into one or more lines, splitting the string after the given number of characters, but not splitting in the middle of a word. Fixes #99998 Closes #99999" - 在第一行提供一个摘要,通常为 50 个字符或更少,后跟一个空行。
- 步骤 8
- 将新分支推送到文档仓库的 fork。
- 步骤 9
- 访问 project repository 并创建拉取请求 (PR)。
- 步骤 10
- 项目维护者将审查你的 PR 并可能请求更改。你可以在维护者合并你的 PR 后删除你的分支。
从源代码构建
你可以在 Hugo 开发的任何阶段构建、安装和测试 Hugo。下面的示例构建和安装 Hugo 的 extended 版本。
构建和安装最新版本:
CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest构建和安装特定版本:
CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.155.3在 master 分支上构建和安装最新提交:
CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@master在特定提交上构建和安装:
CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@c0d9beb