2013-07-06 19:36:30 -04:00
---
2014-05-29 18:42:05 -04:00
aliases:
- /doc/configuration/
date: 2013-07-01
linktitle: Configuration
2014-04-23 03:00:11 -04:00
menu:
main:
2014-05-29 18:42:05 -04:00
parent: getting started
next: /overview/source-directory
notoc: true
prev: /overview/usage
title: Configuring Hugo
weight: 40
2013-07-08 17:57:01 -04:00
---
2013-07-04 11:32:55 -04:00
The directory structure and templates provide the majority of the
2014-09-03 00:12:26 -04:00
configuration for a site. In fact, a config file isn't even needed for many
2014-05-27 18:32:57 -04:00
websites since the defaults follow commonly used patterns.
2013-07-04 11:32:55 -04:00
2013-07-11 22:04:57 -04:00
Hugo expects to find the config file in the root of the source directory and
2014-09-03 00:12:26 -04:00
will look there first for a `config.toml` file. If none is present, it will
2014-05-27 18:32:57 -04:00
then look for a `config.yaml` file, followed by a `config.json` file.
2013-07-06 22:31:43 -04:00
2014-05-27 18:32:57 -04:00
The config file is a site-wide config. The config file provides directions to
hugo on how to build the site as well as site-wide parameters and menus.
2013-07-11 22:04:57 -04:00
## Examples
2014-05-27 18:32:57 -04:00
The following is an example of a typical yaml config file:
2014-05-15 09:58:55 -04:00
---
baseurl: "http://yoursite.example.com/"
...
2013-07-11 22:04:57 -04:00
2015-08-05 18:24:03 -04:00
The following is an example of a toml config file with some of the default values.
Values under `[params]` will populate the `.Site.Params` variable for use in templates:
2013-07-11 22:04:57 -04:00
2013-08-05 14:14:40 -04:00
contentdir = "content"
2013-07-11 22:04:57 -04:00
layoutdir = "layouts"
publishdir = "public"
builddrafts = false
2013-11-18 18:31:02 -05:00
baseurl = "http://yoursite.example.com/"
2014-01-03 18:36:53 -05:00
canonifyurls = true
2015-03-18 02:44:12 -04:00
2015-01-29 14:34:56 -05:00
[taxonomies]
2015-01-05 05:37:47 -05:00
category = "categories"
tag = "tags"
2015-03-18 02:44:12 -04:00
2015-01-05 05:37:47 -05:00
[params]
description = "Tesla's Awesome Hugo Site"
author = "Nikola Tesla"
2013-07-11 22:04:57 -04:00
2015-08-05 18:24:03 -04:00
Here is a yaml configuration file which sets a few more options:
2013-11-18 18:31:02 -05:00
2014-05-15 09:58:55 -04:00
---
baseurl: "http://yoursite.example.com/"
title: "Yoyodyne Widget Blogging"
2014-09-26 23:44:09 -04:00
footnotereturnlinkcontents: "↩"
2014-05-15 09:58:55 -04:00
permalinks:
post: /:year/:month/:title/
params:
Subtitle: "Spinning the cogs in the widgets"
AuthorName: "John Doe"
GitHubUser: "spf13"
ListOfFoo:
- "foo1"
- "foo2"
SidebarRecentLimit: 5
...
2014-05-27 18:32:57 -04:00
2015-02-16 14:43:20 -05:00
## Configuration variables
Following is a list of Hugo-defined variables that you can configure and their current default values:
---
archetypedir: "archetype"
2015-09-09 01:29:04 -04:00
# hostname (and path) to the root, e.g. http://spf13.com/
2015-03-18 02:44:12 -04:00
baseURL: ""
2015-02-16 14:43:20 -05:00
# include content marked as draft
2015-03-18 02:44:12 -04:00
buildDrafts: false
2015-05-10 14:38:05 -04:00
# include content with publishdate in the future
2015-03-18 02:44:12 -04:00
buildFuture: false
2015-05-17 09:44:43 -04:00
# enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs.
2015-08-04 14:00:08 -04:00
relativeURLs: false
2015-03-18 02:44:12 -04:00
canonifyURLs: false
2015-02-16 14:43:20 -05:00
# config file (default is path/config.yaml|json|toml)
2015-03-18 02:44:12 -04:00
config: "config.toml"
2015-02-16 14:43:20 -05:00
contentdir: "content"
dataDir: "data"
defaultExtension: "html"
defaultLayout: "post"
# filesystem path to write files to
2015-03-18 02:44:12 -04:00
destination: ""
2015-02-16 14:43:20 -05:00
disableLiveReload: false
# Do not build RSS files
2015-03-18 02:44:12 -04:00
disableRSS: false
2015-02-16 14:43:20 -05:00
# Do not build Sitemap file
2015-03-18 02:44:12 -04:00
disableSitemap: false
2015-02-16 14:43:20 -05:00
# edit new content with this editor, if provided
2015-03-18 02:44:12 -04:00
editor: ""
2015-02-16 14:43:20 -05:00
footnoteAnchorPrefix: ""
footnoteReturnLinkContents: ""
languageCode: ""
layoutdir: "layouts"
# Enable Logging
2015-03-18 02:44:12 -04:00
log: false
2015-02-16 14:43:20 -05:00
# Log File path (if set, logging enabled automatically)
2015-03-18 02:44:12 -04:00
logFile: ""
2015-02-16 14:43:20 -05:00
# "yaml", "toml", "json"
2015-03-18 02:44:12 -04:00
metaDataFormat: "toml"
2015-02-16 14:43:20 -05:00
newContentEditor: ""
# Don't sync modification time of files
2015-03-18 02:44:12 -04:00
noTimes: false
2015-02-16 14:43:20 -05:00
paginate: 10
paginatePath: "page"
2015-03-18 02:44:12 -04:00
permalinks:
2015-02-16 14:43:20 -05:00
# Pluralize titles in lists using inflect
2015-03-18 02:44:12 -04:00
pluralizeListTitles: true
2015-02-16 14:43:20 -05:00
publishdir: "public"
# color-codes for highlighting derived from this style
pygmentsStyle: "monokai"
# true: use pygments-css or false: color-codes directly
2015-03-18 02:44:12 -04:00
pygmentsUseClasses: false
2015-08-06 01:39:49 -04:00
# default sitemap configuration map
sitemap:
2015-03-18 02:44:12 -04:00
# filesystem path to read files relative from
source: ""
2015-02-16 14:43:20 -05:00
staticdir: "static"
# display memory and timing of different steps of the program
2015-03-18 02:44:12 -04:00
stepAnalysis: false
2015-02-16 14:43:20 -05:00
# theme to use (located in /themes/THEMENAME/)
2015-03-18 02:44:12 -04:00
theme: ""
2015-02-16 14:43:20 -05:00
title: ""
# if true, use /filename.html instead of /filename/
2015-03-18 02:44:12 -04:00
uglyURLs: false
2015-09-01 08:53:25 -04:00
# Do not make the url/path to lowercase
disablePathToLower: false
2015-10-08 10:34:11 -04:00
# if true, auto-detect Chinese/Janapese/Korean Languages in the content. (.Summary and .WordCount can work properly in CJKLanguage)
hasCJKLanguage false
2015-02-16 14:43:20 -05:00
# verbose output
2015-03-18 02:44:12 -04:00
verbose: false
2015-02-16 14:43:20 -05:00
# verbose logging
2015-03-18 02:44:12 -04:00
verboseLog: false
2015-02-16 14:43:20 -05:00
# watch filesystem for changes and recreate as needed
2015-03-18 02:44:12 -04:00
watch: false
2015-02-16 14:43:20 -05:00
---
2015-06-03 07:46:55 -04:00
## Ignore files on build
2015-08-04 15:01:25 -04:00
The following inside `config.toml` will ignore files ending with `.foo` and `.boo` when building with `hugo` :
2015-06-03 07:46:55 -04:00
```
ignoreFiles = [ "\\.foo$", "\\.boo$" ]
```
2015-08-04 15:01:25 -04:00
The above is a list of Regular Expressions, but note the escaping of the `\` to make TOML happy.
2015-02-16 14:43:20 -05:00
2014-12-26 10:04:49 -05:00
## Configure Blackfriday rendering
[Blackfriday ](https://github.com/russross/blackfriday ) is the [Markdown ](http://daringfireball.net/projects/markdown/ ) rendering engine used in Hugo. The Blackfriday configuration in Hugo is mostly a set of sane defaults that should fit most use cases.
2015-01-25 06:08:02 -05:00
But Hugo does expose some options---as listed in the table below, matched with the corresponding flag in the Blackfriday source ([html.go](https://github.com/russross/blackfriday/blob/master/html.go) and [markdown.go ](https://github.com/russross/blackfriday/blob/master/markdown.go )):
2015-01-09 13:51:15 -05:00
< table class = "table table-bordered" >
< thead >
< tr >
< th > Flag< / th > < th > Default< / th > < th > Blackfriday flag< / th >
< / tr >
< / thead >
< tbody >
2015-08-04 15:05:48 -04:00
< tr >
< td > < code > < strong > smartypants< / strong > < / code > < / td >
< td > < code > true< / code > < / td >
< td > < code > HTML_USE_SMARTYPANTS< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Enable/Disable smart punctuation substitutions such as smart quotes, smart dashes, etc.
2015-08-05 18:39:29 -04:00
May be fine-tuned with the < code > angledQuotes< / code > , < code > fractions< / code > , < code > smartDashes< / code > and < code > latexDashes< / code > flags below.< / td >
2015-08-04 15:05:48 -04:00
< / tr >
2015-01-09 13:51:15 -05:00
< tr >
2015-08-04 14:34:47 -04:00
< td > < code > < strong > angledQuotes< / strong > < / code > < / td >
2015-01-09 13:51:15 -05:00
< td > < code > false< / code > < / td >
< td > < code > HTML_SMARTYPANTS_ANGLED_QUOTES< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Enable/Disable smart angled double quotes.< br >
< small > < strong > Example:< / strong > < code > "Hugo"< / code > renders to «Hugo» instead of “Hugo”.< / small > < / td >
2015-01-09 13:51:15 -05:00
< / tr >
2015-01-24 14:37:02 -05:00
< tr >
2015-08-04 14:34:47 -04:00
< td > < code > < strong > fractions< / strong > < / code > < / td >
2015-01-24 14:37:02 -05:00
< td > < code > true< / code > < / td >
< td > < code > HTML_SMARTYPANTS_FRACTIONS< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Enable/Disable smart fractions.< br >
< small > < strong > Example:< / strong > < code > 5/12< / code > renders to < sup > 5< / sup > ⁄ < sub > 12< / sub > (< code > < sup> 5< /sup> & frasl;< sub> 12< /sub> < / code > )< br >
2015-01-24 14:37:02 -05:00
< strong > Caveat:< / strong > Even with < code > fractions = false< / code > ,
Blackfriday would still convert 1/2, 1/4 and 3/4 to ½ (< code > & frac12;< / code > ),
¼ (< code > & frac14;< / code > ) and ¾ (< code > & frac34;< / code > ) respectively,
but only these three.< / small > < / td >
< / tr >
2015-08-05 18:39:29 -04:00
< tr >
< td > < code > < strong > smartDashes< / strong > < / code > < / td >
< td > < code > true< / code > < / td >
< td > < code > HTML_SMARTYPANTS_DASHES< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
< td class = "purpose-description" colspan = "2" > Enable/Disable smart dashes, i.e. turning hyphens into en dash or em dash.< br >
Its behavior can be modified with the < code > latexDashes< / code > flag listed below.< / td >
< / tr >
2015-06-28 09:27:47 -04:00
< tr >
2015-08-04 15:05:48 -04:00
< td > < code > < strong > latexDashes< / strong > < / code > < / td >
< td > < code > true< / code > < / td >
< td > < code > HTML_SMARTYPANTS_LATEX_DASHES< / code > < / td >
2015-06-28 09:27:47 -04:00
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Choose between LaTeX-style smart dashes and “conventional” smart dashes.< br >
< strong > If < code > true< / code > ,< / strong > < code > --< / code > is translated into “– ” (< code > & ndash;< / code > ), and < code > ---< / code > is translated into “— ” (< code > & mdash;< / code > ).< br >
< strong > If < code > false< / code > ,< / strong > < code > --< / code > is translated into “— ” (< code > & mdash;< / code > ), whereas a < em > spaced< / em > single hyphen between two words is turned into an en dash, e.g. < code > 12 June - 3 July< / code > becomes < code > 12 June & ndash; 3 July< / code > .< / td >
2015-06-28 09:27:47 -04:00
< / tr >
2015-08-05 18:24:03 -04:00
< tr style = "height: 0.5em;" > < / tr >
2015-08-04 15:05:48 -04:00
2015-06-28 09:27:47 -04:00
< tr >
2015-08-04 15:05:48 -04:00
< td > < code > < strong > hrefTargetBlank< / strong > < / code > < / td >
< td > < code > false< / code > < / td >
< td > < code > HTML_HREF_TARGET_BLANK< / code > < / td >
2015-06-28 09:27:47 -04:00
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Open external links in a new window/tab.< / td >
2015-06-28 09:27:47 -04:00
< / tr >
2015-01-09 13:51:15 -05:00
< tr >
2015-08-04 14:34:47 -04:00
< td > < code > < strong > plainIdAnchors< / strong > < / code > < / td >
2015-01-09 13:51:15 -05:00
< td > < code > false< / code > < / td >
< td > < code > FootnoteAnchorPrefix< / code > and < code > HeaderIDSuffix< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > If < code > true< / code > , then header and footnote IDs are generated without the document ID.< br >
< small > < strong > Example:< / strong > < code > #my-header< / code > instead of < code > #my-header:bec3ed8ba720b9073ab75abcf3ba5d97< / code > .< / small > < / td >
2015-01-09 13:51:15 -05:00
< / tr >
2015-01-25 06:08:02 -05:00
2015-08-05 18:24:03 -04:00
< tr style = "height: 0.5em;" > < / tr >
2015-08-04 15:05:48 -04:00
2015-01-25 06:08:02 -05:00
< tr >
2015-08-04 14:34:47 -04:00
< td > < code > < strong > extensions< / strong > < / code > < / td >
2015-01-25 06:08:02 -05:00
< td > < code > []< / code > < / td >
< td > < code > EXTENSION_*< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Use non-default additional extensions.< br >
< small > < strong > Example:< / strong > Add < code > "hardLineBreak"< / code > to use < code > EXTENSION_HARD_LINE_BREAK< / code > .< / small > < / td >
2015-01-25 06:08:02 -05:00
< / tr >
2015-04-15 21:54:10 -04:00
< tr >
2015-08-04 14:34:47 -04:00
< td > < code > < strong > extensionsmask< / strong > < / code > < / td >
2015-04-15 21:54:10 -04:00
< td > < code > []< / code > < / td >
< td > < code > EXTENSION_*< / code > < / td >
< / tr >
< tr >
< td class = "purpose-title" > Purpose:< / td >
2015-08-05 18:24:03 -04:00
< td class = "purpose-description" colspan = "2" > Extensions in this option won't be loaded.< br >
< small > < strong > Example:< / strong > Add < code > "autoHeaderIds"< / code > to disable < code > EXTENSION_AUTO_HEADER_IDS< / code > .< / small > < / td >
2015-04-15 21:54:10 -04:00
< / tr >
2015-01-09 13:51:15 -05:00
< / tbody >
< / table >
2014-12-26 10:04:49 -05:00
2015-01-18 15:25:20 -05:00
**Note** that these flags must be grouped under the `blackfriday` key and can be set on **both site and page level** . If set on page, it will override the site setting. Example:
2014-12-26 10:04:49 -05:00
2015-01-18 15:25:20 -05:00
< table class = "table" >
2015-01-27 21:17:09 -05:00
< thead >
2015-01-18 15:25:20 -05:00
< tr >
< th > TOML< / th > < th > YAML< / th >
< / tr >
2015-01-27 21:17:09 -05:00
< / thead >
< tbody >
2015-08-04 14:34:47 -04:00
< tr style = "vertical-align: top;" >
< td style = "width: 50%;" > < pre > < code > [blackfriday]
2015-01-24 14:37:02 -05:00
angledQuotes = true
fractions = false
plainIdAnchors = true
2015-01-25 06:08:02 -05:00
extensions = ["hardLineBreak"]
2015-01-18 15:25:20 -05:00
< / code > < / pre > < / td >
< td > < pre > < code > blackfriday:
angledQuotes: true
2015-01-24 14:37:02 -05:00
fractions: false
2015-01-18 15:25:20 -05:00
plainIdAnchors: true
2015-01-25 06:08:02 -05:00
extensions:
- hardLineBreak
2015-01-18 15:25:20 -05:00
< / code > < / pre > < / td >
< / tr >
2015-01-27 21:17:09 -05:00
< / tbody >
2015-01-18 15:25:20 -05:00
< / table >
2014-12-26 10:04:49 -05:00
2014-08-15 14:39:12 -04:00
## Notes
2015-01-27 21:17:09 -05:00
Config changes are not reflected with [LiveReload ](/extras/livereload/ ).
2014-08-15 14:39:12 -04:00
Please restart `hugo server --watch` whenever you make a config change.