Hugo 学习笔记

Caret Up

下载&安装

https://github.com/gohugoio/hugo

进入 releases 下载对应平台二进制文件

如果需要支持 scss 文件,需下载 extended 版本

添加二进制文件路径到 PATH 以全局使用

配置文件

TOML 格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
baseURL = "https://northes.io/"
languageCode = "zh-cn"
title = "Northes"
theme = "hugo-tania"

[params]
titleEmoji = "😃"

[menu]
header = [
    { name = "Articles", url = "/articles/", weight = 1 },
    { name = "About", url = "/about/", weight = 2 },
]


[markup.highlight]
noClasses = false
lineNos = true

YAML 格式

如不习惯TOML格式,可改为YAML

 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
# 基础地址
baseurl: "https://example.com" 
# 语言代码
languageCode: "en-us"
# 标题
title: "Hugo Tania"
# 主题名称
theme: "hugo-tania"
# 首页展示的条数
paginate: 6


params:
  titleEmoji: '😃'
  socialOptions:
    github: https://github.com/WingLim
    email: [email protected]

# 菜单
menu:
  header:
    - name: Articles # 名称
      url: "/articles/" # 相对URL
      weight: 1 # 权重,升序
    - name: "About"
      weight: 2
      url: "/about"
    - name: "Rss"
      url: "/index.xml"
      weight: 3

markup:
  highlight:
    noClasses: false
    lineNos: true
  goldmark:
    renderer:
      unsafe: true #渲染原始html

文章前置信息

模板

一般为\archetypes目录下的default.md文件

1
2
3
4
5
6
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
author : "Northes"
---

通过命令新建文件时会包含于文件内

1
$ hugo new /posts/kubectl.md

可选参数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
---
# 文章标题
title: "title"
# 副标题
subtitle: "subtitle"
# 文章创建时间
date: 2021-05-28T12:09:13+08:00
# 是否为草稿状态,为草稿状态时不加 -D 运行参数文章不可见
draft: true
# 作者
author: "Northes"
# 简介
description: "这是一篇文章"
# 上次修改时间
lastmod: 2021-05-29T12:09:13+08:00
# 发布日期,在日期之前不会显示
publishDate: 2021-05-29T12:09:13+08:00
# 过期日期,在日期之后不再显示
expiryDate: 2021-05-29T12:09:13+08:00
---

命令

创建网站

1
$ hugo new site SiteName

创建文章

1
$ hugo new posts/my-first-post.md

构建网站

1
2
3
4
$ hugo

-D 包含标记为 draft (草稿)的内容
-F 包含发布日期为未来的内容

运行开发服务器

1
2
3
4
$ hugo server

-p 指定端口
... 继承hugo的父命令

查看版本

1
$ hugo version

部署

目前仅尝试过部署到 Vercel 平台,部署时遇到的坑有

Error: Error building site: failed to render pages: render of "page" failed: "/vercel/path0/themes/hugo-tania/layouts/_default/single.html:14:38": execute of template failed: template: _default/single.html:14:38: executing "main" at <.GetTerms>: can't evaluate field GetTerms in type *hugolib.pageState

这是 Vercel 上版本不匹配造成的,可通过在项目根目录下新建 vercel.json 文件指定 Hugo 版本解决

1
2
3
4
5
6
7
{
  "build": {
    "env": {
      "HUGO_VERSION": "0.83.1"
    }
  }
}

查看本机版本

1
2
$ hugo version
hugo v0.83.1-5AFE0A57 windows/amd64 BuildDate=2021-05-02T14:38:05Z VendorInfo=gohugoio