summaryrefslogtreecommitdiffstats
path: root/README.md
blob: e6e0ce1dfa1dbd67c6c9b024ddb6d90ca3182d8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Hugo
A Fast and Flexible Static Site Generator built with love by [spf13](http://spf13.com) 
and [friends](http://github.com/spf13/hugo/graphs/contributors) in Go.

[![Build Status](https://travis-ci.org/spf13/hugo.png)](https://travis-ci.org/spf13/hugo)
[![wercker status](https://app.wercker.com/status/1a0de7d703ce3b80527f00f675e1eb32 "wercker status")](https://app.wercker.com/project/bykey/1a0de7d703ce3b80527f00f675e1eb32)

## Overview

Hugo is a static site generator written in Go. It is optimized for
speed, easy use and configurability. Hugo takes a directory with content and
templates and renders them into a full HTML website.

Hugo makes use of Markdown files with front matter for meta data.

A typical website of moderate size can be
rendered in a fraction of a second. A good rule of thumb is that Hugo
takes around 1 millisecond for each piece of content.

It is written to work well with any
kind of website including blogs, tumbles and docs.

**Complete documentation is available at [Hugo Documentation](http://gohugo.io).**

# Getting Started

## Installing Hugo

Hugo is written in Go with support for Windows, Linux, FreeBSD and OS X.

The latest release can be found at [hugo releases](https://github.com/spf13/hugo/releases).
We currently build for Windows, Linux, FreeBSD and OS X for x64
and i386 architectures.

### Installing Hugo (binary)

Installation is very easy. Simply download the appropriate version for your
platform from [Hugo Releases](https://github.com/spf13/hugo/releases).
Once downloaded, it can be run from anywhere. You don't need to install
it into a global location. This works well for shared hosts and other systems
where you don't have a privileged account.

Ideally, you should install it somewhere in your path for easy use. `/usr/local/bin`
is the most probable location.

*The Hugo executable has no external dependencies.*

### Installing from source

#### Dependencies

* Git
* Go 1.1+
* Mercurial
* Bazaar

#### 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 $GOROOT or $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`

#### Get directly from GitHub:

If you only want to build from source, it's even easier.

    go get -v github.com/spf13/hugo

#### Building Hugo

    cd /path/to/hugo
    go build -o hugo main.go
    mv hugo /usr/local/bin/

##### Adding compile information to Hugo

When Hugo is built using the above steps, the `version` sub-command will include the `mdate` of the Hugo executable.  Instead, it is possible to have the `version` sub-command return information about the git commit used and time of compilation using `build` flags.

To do this, replace the `go build` command with the following *(replace `/path/to/hugo` with the actual path)*:

    go build -ldflags "-X /path/to/hugo/commands.commitHash `git rev-parse --short HEAD 2>/dev/null` -X github.com/spf13/hugo/commands.buildDate `date +%FT%T`"  

This will result in hugo version output that looks similar to:

    Hugo Static Site Generator v0.13-DEV buildDate: 2014-10-16T09:59:55Z
    Hugo Static Site Generator v0.13-DEV-24BBFE7 buildDate: 2014-10-16T10:00:55Z

The format of the date is configurable via the `Params.DateFormat` setting.  `DateFormat` is a string value representing the Go time layout that should be used to format the date output. If `Params.DateFormat` is not set, `time.RFC3339` will be used as the default format.See [time documentation](http://golang.org/pkg/time/#pkg-constants) for more information.

Configuration setting using config.yaml as example:

    Params:
       DateFormat: "2006-01-02"

Will result in:

    Hugo Static Site Generator v0.13-DEV buildDate: 2014-10-16
    Hugo Static Site Generator v0.13-DEV-24BBFE7 buildDate: 2014-10-16

#### Running Hugo

    cd /path/to/hugo
    go install github.com/spf13/hugo/hugolib
    go run main.go

#### Contribution Guidelines

We welcome your contributions.  To make the process as seamless as possible, we ask for the following:

* Go ahead and 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.
     * Run `go fmt`
     * 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 build completes.  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.

**Complete documentation is available at [Hugo Documentation](http://gohugo.io).**

[![Analytics](https://ga-beacon.appspot.com/UA-7131036-6/hugo/readme)](https://github.com/igrigorik/ga-beacon)
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/spf13/hugo/trend.png)](https://bitdeli.com/free "Bitdeli Badge")