Contributing to Hugo
All contributions to Hugo are welcome. Whether you want to scratch an itch, or simply contribute to the project, feel free to pick something from the roadmap or contact spf13 about what may make sense to do next.
You should fork the project and make your changes. We encourage pull requests to discuss code changes.
When you’re ready to create a pull request, be sure to:
- Have test cases for the new code. If you have questions about how to do it, please ask in your pull request.
- Squash your commits into a single commit.
git rebase -i. It’s okay to force update your pull request.
- Make sure
go test ./...passes, and
go buildcompletes. Our Travis CI loop will catch most things that are missing. The exception: Windows. We run on Windows from time to time, but if you have access, please check on a Windows machine too.
- Fork Hugo from https://github.com/spf13/hugo
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Commit passing tests to validate changes.
- Squash commits into a single (or logically grouped) commits (
git rebase -i)
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request
Building from source
Clone locally (for contributors):
git clone https://github.com/spf13/hugo cd hugo go get
Because Go expects all of your libraries to be found in either
$GOPATH, it’s helpful to symlink the project to one
of the following paths:
ln -s /path/to/your/hugo $GOPATH/src/github.com/spf13/hugo
ln -s /path/to/your/hugo $GOROOT/src/pkg/github.com/spf13/hugo
cd /path/to/hugo go install github.com/spf13/hugo/hugo go run main.go
cd /path/to/hugo go build -o hugo main.go mv hugo /usr/local/bin/
You got your new website running and it’s powered by Hugo? Great. You can add your website with a few steps to the showcase.
First, make sure that you created a fork of Hugo on Github and cloned your fork on your local computer. Next, create a seperate branch for your additions:
# You can choose a different descriptive branch name if you like git checkout -b showcase-addition
Let’s create a new document that contains some metadata of your homepage. Replace
example in the following examples with something unique like the name of your website. Inside the terminal enter the following commands:
cd docs hugo new doc/showcase/example.md
You should find the new file at
content/showcase/example.md. Open it in an editor. The file should contain a frontmatter with predefined variables like below:
--- date: 2016-02-12T21:01:18+01:00 description: "" license: "" licenseLink: "" sitelink: http://spf13.com/ sourceLink: https://github.com/spf13/spf13.com tags: - personal - blog thumbnail: /img/spf13-tn.jpg title: example ---
Add at least values for
description and a path for
Furthermore, we need to create the thumbnail of your website. It’s important that the thumbnail has the required dimensions of 600px by 400px. Give your thumbnail a name like
example-tn.jpg. Save it under
Check a last time that everything works as expected. Start Hugo’s built-in server in order to inspect your local copy of the showcase in the browser:
If everything looks fine, we are ready to commit your additions. For the sake of best practices, please make sure that your commit follows our code contribution guideline.
git commit -m"Add example.com to the showcase"
Last but not least, we’re ready to create a pull request.