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