Development
Introduction
You can contribute to the Hugo project by:
- Answering questions on the forum
- Improving the documentation
- Monitoring the issue queue
- Creating or improving themes
- Squashing bugs
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:
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-99999For 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 installNew in v0.159.2 To build and install the deploy edition:
CGO_ENABLED=0 go install -tags withdeployTo 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 extendedTo 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" - Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
- 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.
