HUGO
Menu
GitHub 87608 stars Mastodon

Development

Contribute to the development of Hugo.

Introduction

You can contribute to the Hugo project by:

Please submit documentation issues and pull requests to the documentation repository.

If you have an idea for an enhancement or new feature, create a new topic on the forum in the “Feature” category. This will help you to:

  • Determine if the capability already exists
  • Measure interest
  • Refine the concept

If there is sufficient interest, create a proposal. Do not submit a pull request until the project lead accepts the proposal.

For a complete guide to contributing to Hugo, see the Contribution Guide.

Prerequisites

To build Hugo from source you must install:

  1. Install Git
  2. Install Go version 1.25.0 or later

GitHub workflow

This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line.

Use this workflow to create and submit pull requests.

Step 1
Fork the project repository.
Step 2
Clone your fork.
Step 3
Create a new branch with a descriptive name that includes the corresponding issue number.

For a new feature:

git checkout -b feat/implement-some-feature-99999

For a bug fix:

git checkout -b fix/fix-some-bug-99999
Step 4
Make changes.
Step 5
Build and install.

To build and install the standard edition:

CGO_ENABLED=0 go install

New in v0.159.2 To build and install the deploy edition:

CGO_ENABLED=0 go install -tags withdeploy

To build and install the extended edition, first install a C compiler such as GCC or Clang and then run the following command:

Deprecated in v0.161.0 Build the standard edition instead.

CGO_ENABLED=1 go install -tags extended

To build and install the extended/deploy edition, first install a C compiler such as GCC or Clang and then run the following command:

Deprecated in v0.161.0 Build the deploy edition instead.

CGO_ENABLED=1 go install -tags extended,withdeploy
Step 6
Test your changes:
go test ./...
Step 7
Commit your changes with a descriptive commit message:
  • Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
    • Begin the summary with the name of the package, followed by a colon, a space, and a brief description of the change beginning with a capital letter
    • Use imperative present tense
    • See the commit message guidelines for requirements
  • Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line.
  • Add one or more “Fixes” or “Closes” keywords, each on its own line, referencing the issues addressed by this change.

For example:

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"
Step 8
Push the new branch to your fork of the documentation repository.
Step 9
Visit the project repository and create a pull request (PR).
Step 10
A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.