©️ OverlookArt
首页 / HUGO / HUGO 项目配置

HUGO 项目配置

HUGO 项目初始化后 会在项目根目录生成 ./config.toml 的配置文件
HUGO 项目支持 config.toml, config.yaml, config.json 三种格式

基本配置

 1{   // config.json
 2    // 域名路径
 3    "baseURL": "http://example.org/",
 4    // 网站的标题
 5    "title": "",
 6    // 版权声明
 7    "copyright": "",
 8    // 是否将相对路径转为绝对路径
 9    "canonifyURLs": false,
10    // 编译时,从静态目录中删除找不到的目标文件。
11    "cleanDestinationDir": false,
12    //禁用网址/路径转换为小写。
13    "disablePathToLower": false,
14    //禁用浏览器窗口的自动实时重新加载。
15    "disableLiveReload": false,
16    //禁用指定种类的所有页面。此列表中允许的值:
17    //“page”、“home”、“section”、“taxonomy”、“term”、“RSS”、“sitemap”、“robotsTXT”、“404”。
18    "disableKinds": [],
19    //默认情况下,Hugo将仅在主页的HTML头部注入一个生成器元标签。你可以关闭它,
20    //但如果你不这样做,我们将不胜感激,因为这是观看雨果人气上升的好方法。
21    "disableHugoGeneratorInject": false,
22    //将禁用别名重定向的生成。请注意,即使设置了禁用别名,别名本身也会保留在页面上。
23    //其动机是能够使用自定义输出格式在.htaccess、Netlify _redirects文件或类似文件中生成301重定向。
24    "disableAliases": false,
25    // 默认的内容语言指示器
26    "defaultContentLanguage": "en",
27    // 在子目录中呈现默认内容语言,例如content/en/。然后,站点根/将重定向到/en/。
28    "defaultContentLanguageInSubdir": false,
29    //启用。每个页面的GitInfo对象(如果Hugo网站由Git版本控制)。然后,这将使用该内容文件的最后一个git提交日期更新每个页面的Lastmod参数。
30    "enableGitInfo": false,
31}

项目目录配置

 1{   // config.json
 2    ...
 3    // 读取页面文件的目录
 4    "contentDir": "content",
 5    // 读取数据文件的目录
 6    "dataDir": "data",
 7    // 读取资源文件的目录 通过 resources.Get 获取该目录下的资源
 8    "assetDir": "assets",
 9    // 读取 markdown 的扉页配置模版目录
10    "archetypeDir": "archetypes",
11    // 编译后生成站点的目录
12    "publishDir": "public",
13    // 读取主题的目录
14    "themesDir": "themes"
15    ...
16}

编译配置

1{   // config.json
2    // 是否编译草稿页面
3    "buildDrafts": false,
4    // 是否编译过期页面
5    "buildExpired": false,
6    // 是否编译未发布页面
7    "buildFuture": false,
8}

配置模块化

HUGO 会根据不同的运行环境加载对应的配置项
没有创建运行环境配置项会加载默认的配置项
./config/_default/config.json 默认的配置
./config/development/config.json 开发环境的配置项
./config/production/config.json 生成环境的配置项
还可以将 ../config.json 文件中的配置集合拆分到单个文件 例如菜单可以拆分 ../menu.json

配置菜单模块

 1// menu.json
 2{   // 读取菜单:
 3    "main":[
 4        {
 5            // 唯一标识
 6            "identifier":"",
 7            // 菜单名称
 8            "name":"",
 9            // 
10            "url": "",
11            // 打开页面的 a 标签
12            "pre":"",
13            // 对页面路径的引用
14            "pageRef": "",
15            // 菜单权重 对菜单项按权重进行升序排序
16            "weight": 1,
17            // 父级菜单的唯一标识
18            "parent": "",
19            // 子菜单
20            "children":[],
21            // ?
22            "post": "",
23            // 附加参数
24            "params":{
25                ...
26            }
27        }
28    ]
29}
<!-- 获取菜单配置 -->
{{ .Site.Menus.main }}

Markup 配置

 1// /config/_default/markup.json
 2{
 3    //Markdown 默认的渲染器
 4    "defaultMarkdownHandler": "goldmark",
 5    "goldmark": {
 6        //扩展配置
 7        "extensions": {
 8            "strikethrough": true, //是否启用删除线扩展
 9            "definitionList": true, //是否启用自定义列表
10            "linkify": true, //链接转换扩展,会将纯文本中的 URL 和邮箱转换为链接
11            "table": true, //是否启用表格扩展
12
13        },
14        //解析器配置
15        "parser": {
16            "wrapStandAloneImageWithinParagraph": true
17        },
18        //渲染器配置
19        "renderer": {
20            "hardWraps": true,
21            "unsafe": true, //是否启用不安全的 HTML 渲染,开启后可以解析 html 标签并渲染
22            "xhtml": true
23        }
24    },
25    //单篇页面的标题目录配置
26    "tableOfContents": { 
27        "startLevel": 1, //从标题级别1(h1)开始渲染目录。
28        "endLevel": 3, //从标题级别3(h3)结束渲染目录。
29        "ordered": true //是否生成有序列表。
30    },
31    //代码语法高亮配置
32    "highlight": {
33        "codeFences": true, //是否启用代码块的 Markdown 语法
34        "style": "doom-one2", //高亮样式: 提供多种高亮样式可进行配置
35        "noClasses":true, //是否禁用 CSS 类名
36        "guessSyntax": false, //是否自动猜测代码块的语言
37        "lineNos": true, //是否显示行号
38        "lineNoStart": 1, //行号开始数值
39        "lineNumbersInTable": false, //每一行是否在单行内不换行展示
40        "hl_Lines": "2 4 6-8", //高亮显示行数,第2行和第四行进行高亮显示
41        "hl_inline": false,//是否启用内联代码高亮显示,启用后代码块被 ` ` 包裹,失去原有的段落格式
42        "noHl": true,//是否开启禁用高亮显示
43        "anchorLineNos": false,//是否为每一行生成唯一的链接
44        "lineAnchors": "",
45        "tabWidth": 4 //指定制表符的宽度
46    }
47}