hugo/docs/content/en/contribute/development.md
2024-02-07 20:46:41 +01:00

149 lines
4 KiB
Markdown

---
title: Development
description: Contribute to the development of Hugo.
categories: [contribute]
keywords: [development]
menu:
docs:
parent: contribute
weight: 20
weight: 20
toc: true
---
## 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].
[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug
[contributing]: CONTRIBUTING.md
[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md
[documentation repository]: https://github.com/gohugoio/hugoDocs
[documentation]: https://gohugo.io/documentation
[forum]: https://discourse.gohugo.io
[issue queue]: https://github.com/gohugoio/hugo/issues
[themes]: https://themes.gohugo.io/
[contribution guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md
## Prerequisites
To build the extended edition of Hugo from source you must:
1. Install [Git]
1. Install [Go] version 1.20 or later
1. Install a C compiler, either [GCC] or [Clang]
1. Update your `PATH` environment variable as described in the [Go documentation]
[Clang]: https://clang.llvm.org/
[GCC]: https://gcc.gnu.org/
[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
[Go documentation]: https://go.dev/doc/code#Command
[Go]: https://go.dev/doc/install
{{% note %}}
See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
{{% /note %}}
## GitHub workflow
{{% note %}}
This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line.
{{% /note %}}
Use this workflow to create and submit pull requests.
Step 1
: Fork the [project repository].
[project repository]: https://github.com/gohugoio/hugo/
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:
```sh
git checkout -b feat/implement-some-feature-99999
```
For a bug fix:
```sh
git checkout -b fix/fix-some-bug-99999
```
Step 4
: Make changes.
Step 5
: Compile and install:
```text
CGO_ENABLED=1 go install -tags extended
```
Step 6
: Test your changes:
```text
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.
- Optionally, provide a detailed description where each line is 80 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.
[issues]: https://github.com/gohugoio/hugo/issues
For example:
```sh
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"
```
See the [commit message guidelines] for details.
[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines
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.