配置 Hugo

通常的使用情况下,一个网站并不需要一个配置文件,因为它的目录结构和模板就提供了主要的配置。

Hugo 需要在源目录查找一个 config.toml 的配置文件。如果这个文件不存在,将会查找 config.yaml,然后是 config.json 。

这个配置文件是一个整站的配置。它给 Hugo 提供了如何构建站点的方式,比如全局的参数和菜单。

示例

下面是一个典型的 yaml 格式的配置文件的示例:

---
baseurl: "http://yoursite.example.com/"
...

下面是一个 toml 格式的带了一些默认值的配置文件。 在 [params] 下面的值将会构成模板里的 .Site.Params 变量:

contentdir = "content"
layoutdir = "layouts"
publishdir = "public"
builddrafts = false
baseurl = "http://yoursite.example.com/"
canonifyurls = true

[taxonomies]
  category = "categories"
  tag = "tags"

[params]
  description = "Tesla's Awesome Hugo Site"
  author = "Nikola Tesla"

这是一个 yaml 格式的配置文件,设置了一些更多的选项:

---
baseurl: "http://yoursite.example.com/"
title: "Yoyodyne Widget Blogging"
footnotereturnlinkcontents: "↩"
permalinks:
  post: /:year/:month/:title/
params:
  Subtitle: "Spinning the cogs in the widgets"
  AuthorName: "John Doe"
  GitHubUser: "spf13"
  ListOfFoo:
    - "foo1"
    - "foo2"
  SidebarRecentLimit: 5
...

配置变量

下面是 Hugo 定义好的变量列表,以及他们的默认值,你可以设置他们:

---
archetypedir:               "archetype"
# hostname (and path) to the root, e.g. http://spf13.com/
baseURL:                    ""
# include content marked as draft
buildDrafts:                false
# include content with publishdate in the future
buildFuture:                false
# enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs.
relativeURLs:               false
canonifyURLs:               false
# config file (default is path/config.yaml|json|toml)
config:                     "config.toml"
contentdir:                 "content"
dataDir:                    "data"
defaultExtension:           "html"
defaultLayout:              "post"
disableLiveReload:          false
# Do not build RSS files
disableRSS:                 false
# Do not build Sitemap file
disableSitemap:             false
# edit new content with this editor, if provided
editor:                     ""
footnoteAnchorPrefix:       ""
footnoteReturnLinkContents: ""
# google analytics tracking id
googleAnalytics:            ""
languageCode:               ""
layoutdir:                  "layouts"
# Enable Logging
log:                        false
# Log File path (if set, logging enabled automatically)
logFile:                    ""
# "yaml", "toml", "json"
metaDataFormat:             "toml"
newContentEditor:           ""
# Don't sync modification time of files
noTimes:                    false
paginate:                   10
paginatePath:               "page"
permalinks:
# Pluralize titles in lists using inflect
pluralizeListTitles:        true
# Preserve special characters in taxonomy names ("Gérard Depardieu" vs "Gerard Depardieu")
preserveTaxonomyNames:      false
# filesystem path to write files to
publishdir:                 "public"
# color-codes for highlighting derived from this style
pygmentsStyle:              "monokai"
# true: use pygments-css or false: color-codes directly
pygmentsUseClasses:         false
# default sitemap configuration map
sitemap:
# filesystem path to read files relative from
source:                     ""
staticdir:                  "static"
# display memory and timing of different steps of the program
stepAnalysis:               false
# theme to use (located in /doc/themes/THEMENAME/)
theme:                      ""
title:                      ""
# if true, use /filename.html instead of /filename/
uglyURLs:                   false
# Do not make the url/path to lowercase
disablePathToLower:         false
# if true, auto-detect Chinese/Japanese/Korean Languages in the content. (.Summary and .WordCount can work properly in CJKLanguage)
hasCJKLanguage              false
# verbose output
verbose:                    false
# verbose logging
verboseLog:                 false
# watch filesystem for changes and recreate as needed
watch:                      true
---

编译时忽略的文件

使用 hugo 编译时,将忽略 config.toml 文件中指定的内容,比如:以 .foo 和 .boo 结尾的文件。

ignoreFiles = [ "\.foo$", "\.boo$" ]

上面使用了正则表达式,使用  转义是因为在 TOML 里。

设置 Blackfriday 渲染

Blackfriday 是 Hugo 中使用的 Markdown 渲染引擎。 Hugo 中的 Blackfriday 的默认设置已经很健全,可以适用于大多数的情况。

但是同时 Hugo 还提供了一些选项 — 正如下面的表格里的所示的, 对应于 Blackfriday 源码里的选项。 (html.go 和 markdown.go):

旗帜 默认 黑色星期五标志
smartypants true HTML_USE_SMARTYPANTS
目的: 启用/禁用智能标点换人如智能引号,破折号智能等可能是微调用angledQuotesfractionssmartDasheslatexDashes下面的标志。
angledQuotes false HTML_SMARTYPANTS_ANGLED_QUOTES
目的: 启用/禁用智能斜双引号。
示例: "Hugo"渲染为“Hugo”而不是“Hugo”。
fractions true HTML_SMARTYPANTS_FRACTIONS
目的: 启用/禁用智能分数。
示例: 5/12渲染为5 ⁄ 12 ( <sup>5</sup>&frasl;<sub>12</sub>)
警告:即使使用fractions = false,Blackfriday 仍会将 1/2、1/4 和 3/4 分别转换为 ½ ( &frac12;)、¼ ( &frac14;) 和 ¾ ( &frac34;),但只有这三个。
smartDashes true HTML_SMARTYPANTS_DASHES
目的: 启用/禁用智能破折号,即将连字符变成短划线或长破折号。
可以使用latexDashes下面列出的标志修改其行为。
latexDashes true HTML_SMARTYPANTS_LATEX_DASHES
目的: 在 LaTeX 风格的智能破折号和“传统”智能破折号之间进行选择。
如果true, --翻译成“-”( &ndash;), 再---翻译成“-”( &mdash;)。
如果false, --被翻译成“—” ( &mdash;),而两个单词之间的一个分隔的单连字符被翻译成一个破折号,例如 12 June - 3 July变成12 June &ndash; 3 July
hrefTargetBlank false HTML_HREF_TARGET_BLANK
目的: 在新窗口/选项卡中打开外部链接。
plainIDAnchors false FootnoteAnchorPrefix 和 HeaderIDSuffix
目的: 如果true,则生成没有文档 ID 的页眉和脚注 ID。
示例: #my-header代替#my-header:bec3ed8ba720b9073ab75abcf3ba5d97.
extensions [] EXTENSION_*
目的: 使用非默认的附加扩展。
示例: 添加"hardLineBreak"使用EXTENSION_HARD_LINE_BREAK
extensionsmask [] EXTENSION_*
目的: 不会加载此选项中的扩展。
示例: 添加"autoHeaderIds"到禁用EXTENSION_AUTO_HEADER_IDS

注意

  1. 这些 flags 是非常大小写敏感的!(Hugo v0.15版本)
  2. 这些选项必须在 blackfriday 项下面,可以 同时用在 site 和 page 级别 。如果在 page 级别设置了,将会覆盖 site 上的设置。比如:

TOML

[blackfriday]
  angledQuotes = true
  fractions = false
  plainIDAnchors = true
  extensions = ["hardLineBreak"]

YAML

blackfriday:
  angledQuotes: true
  fractions: false
  plainIDAnchors: true
  extensions:
    - hardLineBreak

给TA打赏
共{{data.count}}人
人已打赏
网站建设

使用Hugo

2021-11-5 16:08:47

网站建设

来源组织

2021-11-5 16:17:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索