<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>博客 on MowMark的个人博客</title><link>https://mowmark.github.io/mowmark_blog/tags/%E5%8D%9A%E5%AE%A2/</link><description>Recent content in 博客 on MowMark的个人博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 04 Jun 2026 15:56:53 +0800</lastBuildDate><atom:link href="https://mowmark.github.io/mowmark_blog/tags/%E5%8D%9A%E5%AE%A2/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Terminal 主题美化博客</title><link>https://mowmark.github.io/mowmark_blog/website/hugo/002_hugothemeterminal/</link><pubDate>Fri, 22 May 2026 09:12:24 +0800</pubDate><guid>https://mowmark.github.io/mowmark_blog/website/hugo/002_hugothemeterminal/</guid><description>&lt;p&gt;承接上一篇文章: &lt;a class="link" href="https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/" &gt;使用 GitHub Pages 部署博客&lt;/a&gt;, 这篇文章我将分享使用 &lt;code&gt;Terminal&lt;/code&gt; 主题美化博客的个人经验. 由于个人精力有限, 可能有一些地方并没有涉及到, 欢迎讨论交流.&lt;/p&gt;
&lt;h2 id="hugo-配置文件的基本要求"&gt;&lt;a href="#hugo-%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e7%9a%84%e5%9f%ba%e6%9c%ac%e8%a6%81%e6%b1%82" class="header-anchor"&gt;&lt;/a&gt;Hugo 配置文件的基本要求
&lt;/h2&gt;&lt;p&gt;在正式开始之前, 我们需要先梳理 Hugo 主题的基本结构, 而这又绕不开 Hugo 项目的核心机制: &lt;strong&gt;配置文件的覆写机制&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="配置文件的覆写机制"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e7%9a%84%e8%a6%86%e5%86%99%e6%9c%ba%e5%88%b6" class="header-anchor"&gt;&lt;/a&gt;配置文件的覆写机制
&lt;/h3&gt;&lt;p&gt;简单来说, 在新版Hugo中, &lt;strong&gt;&lt;code&gt;config/_default/&lt;/code&gt;目录下的配置文件优先级大于根目录下的配置文件大于主题目录(&lt;code&gt;themes/&lt;/code&gt;)下的配置文件&lt;/strong&gt;, 此外, 主题目录如果随 &lt;code&gt;Git&lt;/code&gt; 自动更新, 我们在里面做的任何修改都会被直接覆盖. 基于这两点, 如果我们要修改主题的配置, 就不能在主题目录下进行, 而要在根目录或者 &lt;code&gt;config/&lt;/code&gt; 目录下操作.&lt;/p&gt;
&lt;h3 id="配置文件的基本要求"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e7%9a%84%e5%9f%ba%e6%9c%ac%e8%a6%81%e6%b1%82" class="header-anchor"&gt;&lt;/a&gt;配置文件的基本要求
&lt;/h3&gt;&lt;p&gt;除此之外, 配置文件的格式, 内容和作用域也需要厘清一下:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hugo 早期要求配置文件名字应该为 &lt;code&gt;config&lt;/code&gt;, 后来变成了 &lt;code&gt;hugo&lt;/code&gt;, 目前版本是两种名字都可以接受, 而格式则可以为 &lt;code&gt;yaml&lt;/code&gt;, &lt;code&gt;toml&lt;/code&gt; 或者 &lt;code&gt;json&lt;/code&gt; 当中的任意一种;&lt;/li&gt;
&lt;li&gt;Hugo 支持将所有配置信息都写在同一个文件中, 也可以拆分开来, 作为不同的配置文件, 但名称必须为 &lt;code&gt;params&lt;/code&gt;, &lt;code&gt;menu&lt;/code&gt; 或者 &lt;code&gt;languages&lt;/code&gt; 已经规定好的一级目录;&lt;/li&gt;
&lt;li&gt;Hugo 项目的全局配置控制整个网站的样式, 如网站主标题, 导航菜单, 默认语言等, 这些信息都存储在 &lt;code&gt;hugo.toml&lt;/code&gt; 或者从中拆分出来的配置文件里, 可能存放在根目录或者 &lt;code&gt;config/&lt;/code&gt; 目录下;&lt;/li&gt;
&lt;li&gt;写在每篇文章头部的 &lt;code&gt;Front Matter&lt;/code&gt; 控制这篇文章的元数据, 如标题, 日期, 标签等, 其优先级高于全局配置. 在使用 &lt;code&gt;hugo new ...&lt;/code&gt; 命令新建文章时, Hugo 会根据存放在 &lt;code&gt;archetypes/&lt;/code&gt; 目录下的文章模板, 自动创建新文章的 &lt;code&gt;Front Matter&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;基于上述几个理由, 读者在使用不同主题时, 有可能会在根目录或者 &lt;code&gt;config/&lt;/code&gt; 目录下看到不同类型的配置文件&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="terminal-主题的配置"&gt;&lt;a href="#terminal-%e4%b8%bb%e9%a2%98%e7%9a%84%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;Terminal 主题的配置
&lt;/h2&gt;&lt;p&gt;Hugo 官方对主题结构没有严格规定, 所以每个主题的组织方式都不太一样, 以下内容基于 &lt;code&gt;Hugo Extended v0.161.1&lt;/code&gt; 和 &lt;code&gt;Terminal 2024-11-22&lt;/code&gt;, 仅供参考.&lt;/p&gt;
&lt;h3 id="复制初始文件"&gt;&lt;a href="#%e5%a4%8d%e5%88%b6%e5%88%9d%e5%a7%8b%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;复制初始文件
&lt;/h3&gt;&lt;p&gt;使用 &lt;code&gt;git submodule ...&lt;/code&gt; 命令安装好主题后, 将 &lt;code&gt;themes/terminal/exampleSite/&lt;/code&gt; 目录下的文件复制到根目录, 作为配置的初始模板. 作者给出的默认配置相当长, 但实际上大部分参数保持默认即可, 只有少数几个参数需要留意.&lt;/p&gt;
&lt;h3 id="修改配置文件"&gt;&lt;a href="#%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;修改配置文件
&lt;/h3&gt;&lt;p&gt;打开根目录的 &lt;code&gt;hugo.toml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;baseurl&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://&amp;lt;Your-UserName&amp;gt;.github.io/&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# 改成你的实际域名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;languageCode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;zh-cn&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# 当前 Hugo 规定的语言代码, 中文用户记得改这里&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;terminal&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;paginate&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 这个参数对应 content/ 目录下存放文章的文件夹名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 如果你的文章放在 content/blog/ 下，这里就要改成 &amp;#34;blog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 不改的话首页会加载不出任何文章，是比较容易踩的坑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;contentTypeName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;posts&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 首页显示的菜单项数量，超出的部分会折叠进右上角&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# 如果你想让页面干净一点，设成 0 也没问题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;showMenuItems&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="实际修改主题文件"&gt;&lt;a href="#%e5%ae%9e%e9%99%85%e4%bf%ae%e6%94%b9%e4%b8%bb%e9%a2%98%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;实际修改主题文件
&lt;/h2&gt;&lt;p&gt;前面提到不能在主题目录里改文件, 那如果我们确实需要修改主题的某个模板, 应该怎么做?&lt;/p&gt;
&lt;p&gt;以修改页脚为例. 假设你想在底部加上备案号, 或者就是单纯不喜欢默认的版权格式, 直觉上可能会去 &lt;code&gt;themes/terminal/layouts/partials/footer.html&lt;/code&gt; 里改, 但这样做下次主题更新就会丢失.&lt;/p&gt;
&lt;p&gt;正确的做法是:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在根目录下创建相同的路径 &lt;code&gt;layouts/partials/&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;themes/terminal/layouts/partials/footer.html&lt;/code&gt; 复制到这个目录下;&lt;/li&gt;
&lt;li&gt;修改根目录下的这个副本.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hugo 在构建时会优先读取根目录下的 &lt;code&gt;layouts/&lt;/code&gt; 目录, 主题里的原版文件不会被动, 下次更新主题也不会影响你的改动. 其他模板文件的修改方式都是一样的道理.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="小结"&gt;&lt;a href="#%e5%b0%8f%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;小结
&lt;/h2&gt;&lt;p&gt;这篇文章到这里基本就结束了. Terminal 主题本身并不复杂, 配置文件改几个参数就能跑起来, 真正需要花时间理解的反而是 Hugo 本身的复写机制, 这个搞清楚了, 后续不管换什么主题, 修改起来都会顺手很多.&lt;/p&gt;
&lt;p&gt;如果读者想要使用 Stack 主题, 后面我会更新相关文章, Stack 主题的结构比 Terminal 复杂不少, 需要花费比较多的时间进行调试.&lt;/p&gt;</description></item><item><title>使用 GitHub Pages 发布个人博客</title><link>https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/</link><pubDate>Tue, 19 May 2026 22:01:19 +0800</pubDate><guid>https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/</guid><description>&lt;p&gt;承接上一篇文章: &lt;strong&gt;&lt;a class="link" href="https://mowmark.github.io/mowmark_blog/website/hugo/000_hugoinit/" &gt;使用Hugo创建个人博客&lt;/a&gt;&lt;/strong&gt;, 在本地搭建好环境后, 本文将告诉你如何将博客手动以及自动化发布到公网.&lt;/p&gt;
&lt;h2 id="网络发布基础配置"&gt;&lt;a href="#%e7%bd%91%e7%bb%9c%e5%8f%91%e5%b8%83%e5%9f%ba%e7%a1%80%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;网络发布基础配置
&lt;/h2&gt;&lt;p&gt;想要将网站发布到公网, 需要满足三个条件: &lt;strong&gt;代码托管平台, 服务器(托管服务)以及域名&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;出于性价比与便利性, 本文采用 &lt;strong&gt;GitHub 仓库 + GitHub Pages (免费托管)&lt;/strong&gt; 的一站式方案, 并使用 GitHub 提供的免费域名.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;补充信息&lt;/strong&gt;:
上面三个条件中, 代码托管平台有GitHub, GitLab和Gitee等平台, 域名可以从 GitHub, 腾讯云, 阿里云等平台获取, 而托管服务则可以由 GitHub Pages, Cloudflare Pages, 腾讯云和阿里云提供, 后两者用的人不多, 喜欢挑战自己的伙伴可以尝试部署一下.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="创建-github-仓库"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba-github-%e4%bb%93%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;创建 GitHub 仓库
&lt;/h3&gt;&lt;p&gt;首先, 登录你的 &lt;strong&gt;&lt;a class="link" href="https://github.com" target="_blank" rel="noopener"
 &gt;GitHub 官网&lt;/a&gt;&lt;/strong&gt;, 新建一个仓库.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这里有一个&lt;strong&gt;相当重要的命名规则&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果你希望博客最终的访问域名是简单的&lt;code&gt;https://&amp;lt;Your-UserName&amp;gt;.github.io&lt;/code&gt;, 那么仓库的名称&lt;strong&gt;必须&lt;/strong&gt;命名为&lt;code&gt;&amp;lt;Your-UserName&amp;gt;.github.io&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;如果你随便起了个名字 (例如&lt;code&gt;my-blog&lt;/code&gt;), 那后续的访问域名就会是&lt;code&gt;https://&amp;lt;Your-UserName&amp;gt;.github.io/my-blog&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="GitHub 域名配置" class="gallery-image" data-flex-basis="564px" data-flex-grow="235" height="360" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/GitHub_Domain_Name.png" srcset="https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/GitHub_Domain_Name_hu_d223d1a3bfaf02d3.png 800w, https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/GitHub_Domain_Name.png 847w" width="847"&gt;&lt;/p&gt;
&lt;p&gt;权限请务必选择 &lt;strong&gt;Public(公开)&lt;/strong&gt;, 否则 GitHub Pages 无法免费提供服务. &lt;em&gt;更多信息可以查看 &lt;strong&gt;&lt;a class="link" href="https://githubdocs.cn/en/pages/getting-started-with-github-pages/what-is-github-pages" target="_blank" rel="noopener"
 &gt;GitHub Pages 说明&lt;/a&gt;&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="将本地代码推送到-github"&gt;&lt;a href="#%e5%b0%86%e6%9c%ac%e5%9c%b0%e4%bb%a3%e7%a0%81%e6%8e%a8%e9%80%81%e5%88%b0-github" class="header-anchor"&gt;&lt;/a&gt;将本地代码推送到 GitHub
&lt;/h3&gt;&lt;p&gt;在上一篇文章中, 我们已经在本地项目目录执行过了 &lt;code&gt;git init&lt;/code&gt;. 现在, 我们需要将本地内容推送到刚刚创建的 GitHub 远程仓库.&lt;/p&gt;
&lt;p&gt;首先, 配置 Git 用户信息 (如果之前没配置好全局账号):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config user.email &amp;lt;Your-EmailAddress&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config user.name &amp;lt;Your-UserName&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;: 加上 &lt;code&gt;--global&lt;/code&gt; 参数可以进行全局配置, 配置信息存放在 &lt;code&gt;~/.gitconfig&lt;/code&gt; 文件里. 局部配置则存放在项目隐藏文件 &lt;code&gt;.git/config&lt;/code&gt; 中.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;接下来, 将本地文件提交并推送到远程仓库:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 在项目根目录下:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 将所有文件加入暂存区并提交&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Feat: 博客首次初始化&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 关联远程仓库 (请将下面的链接替换为你的仓库地址)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote add origin https://github.com/&amp;lt;Your-UserName&amp;gt;/&amp;lt;Your-Repository&amp;gt;.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 将本地代码推送到远程仓库的 main 分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;: 关于这个部分, 有非常多的教程会倾向于先在本地运行 &lt;code&gt;hugo&lt;/code&gt; 命令生成静态网页 (放在 &lt;code&gt;public/&lt;/code&gt; 目录下), 再把 &lt;code&gt;public&lt;/code&gt; 文件夹 &lt;code&gt;push&lt;/code&gt; 到 GitHub 仓库. 这种做法相当繁琐, 每次发布文章都需要本地编译.
所以这篇文章我们采用了另外一种做法: &lt;strong&gt;将包含 &lt;code&gt;.md&lt;/code&gt; 原稿的整个项目源码推送上去, 让 GitHub Actions 帮我们在云端自动部署并发布&lt;/strong&gt;.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="部署博客网站"&gt;&lt;a href="#%e9%83%a8%e7%bd%b2%e5%8d%9a%e5%ae%a2%e7%bd%91%e7%ab%99" class="header-anchor"&gt;&lt;/a&gt;部署博客网站
&lt;/h2&gt;&lt;h3 id="配置-github-pages"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae-github-pages" class="header-anchor"&gt;&lt;/a&gt;配置 GitHub Pages
&lt;/h3&gt;&lt;p&gt;进入 GitHub 仓库, 点击顶部的 &lt;strong&gt;Settings&lt;/strong&gt;, 在左侧栏找到 &lt;strong&gt;Pages&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;Build and deployment&lt;/code&gt;（构建和部署）板块下, 将 &lt;code&gt;Source&lt;/code&gt; 的选项从默认的 &lt;code&gt;Deploy from a branch&lt;/code&gt; 改为 &lt;strong&gt;GitHub Actions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="配置 GitHub Pages " class="gallery-image" data-flex-basis="247px" data-flex-grow="103" height="1107" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/GitHub_Pages.png" srcset="https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/GitHub_Pages_hu_34d4e0835a0ed1b6.png 800w, https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/GitHub_Pages.png 1143w" width="1143"&gt;&lt;/p&gt;
&lt;h3 id="创建自动化部署工作流"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba%e8%87%aa%e5%8a%a8%e5%8c%96%e9%83%a8%e7%bd%b2%e5%b7%a5%e4%bd%9c%e6%b5%81" class="header-anchor"&gt;&lt;/a&gt;创建自动化部署工作流
&lt;/h3&gt;&lt;p&gt;我们需要在项目根目录下创建一个特定的文件, 告诉 GitHub 每当有代码推送时该怎么做.&lt;/p&gt;
&lt;p&gt;在项目根目录下执行:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim .github/workflows/hugo.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将以下 &lt;em&gt;&lt;a class="link" href="https://hugo.opendocs.io/hosting-and-deployment/hosting-on-github/" target="_blank" rel="noopener"
 &gt;官方推荐的配置代码&lt;/a&gt;&lt;/em&gt; 粘贴到你的文件中, 根据需要更改分支名称和 Hugo 版本:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-YAML" data-lang="YAML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 自动将 Hugo 站点部署到 GitHub Pages 的示例工作流&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Deploy Hugo site to Pages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;main&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 推送到 main 分支时出发&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 允许在 Actions 页面手动触发&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;read&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;write&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id-token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;write&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;concurrency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;group&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pages&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cancel-in-progress&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;defaults&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;shell&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;bash&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.141.0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 建议填入本地使用的 Hugo 版本&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Hugo CLI&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; &amp;amp;&amp;amp; sudo dpkg -i ${{ runner.temp }}/hugo.deb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Dart Sass&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;sudo snap install dart-sass&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Checkout&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;submodules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;recursive&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 确保拉取主题子模块&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fetch-depth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Setup Pages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/configure-pages@v5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Node.js dependencies&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;[[ -f package-lock.json || -f npm-shrinkwrap.json ]] &amp;amp;&amp;amp; npm ci || true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Build with Hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_CACHEDIR&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ runner.temp }}/hugo_cache&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_ENVIRONMENT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;production&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TZ&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;America/Los_Angeles&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; hugo \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --gc \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --minify \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --baseURL &amp;#34;${{ steps.pages.outputs.base_url }}/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Upload artifact&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/upload-pages-artifact@v3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./public&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Deployment job&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;github-pages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ steps.deployment.outputs.page_url }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;build&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Deploy to GitHub Pages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;deployment&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/deploy-pages@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存后, 将这个文件推送给 GitHub:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;添加 GitHub Actions 部署脚本&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;推送完成后, 点击 GitHub 仓库顶部的 &lt;strong&gt;Actions&lt;/strong&gt; 标签, 会看到一个正在转圈的任务, 等状态变成绿色的勾✅, 你的网站就已经成功发布到公网上了!&lt;/p&gt;
&lt;p&gt;访问你的域名(&lt;code&gt;https://&amp;lt;Your-UserName&amp;gt;.github.io&lt;/code&gt; 或者 &lt;code&gt;https://&amp;lt;Your-UserName&amp;gt;.github.io/&amp;lt;Your-Repository&amp;gt;&lt;/code&gt;)看看吧!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;到目前为止, Hugo 搭建并初始化个人博客的基本步骤就已经写完了, 如果读者对网站的样式没有特别要求, 其实现在已经完全可以开始写文章了.&lt;/p&gt;
&lt;p&gt;如果对 Terminal 主题不是特别满意的, 欢迎移步我的下一篇文章: &lt;a class="link" href="https://mowmark.github.io/mowmark_blog/website/hugo/002_hugothemeterminal/" &gt;使用 Terminal 主题美化博客&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;如果想要使用 Stack 主题美化博客的, 我后续会更新相关文章, 敬请关注!&lt;/p&gt;</description></item><item><title>使用 Hugo 搭建个人博客</title><link>https://mowmark.github.io/mowmark_blog/website/hugo/000_hugoinit/</link><pubDate>Wed, 13 May 2026 20:53:02 +0800</pubDate><guid>https://mowmark.github.io/mowmark_blog/website/hugo/000_hugoinit/</guid><description>&lt;h2 id="前言"&gt;&lt;a href="#%e5%89%8d%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;前言
&lt;/h2&gt;&lt;p&gt;由于学业原因, 最近一直在Ubuntu下学习SLAM算法以及开发, 有相当多操作学了又忘, 忘了再学. 为了打破这个循环, 我决定写一个个人博客进行技术沉淀与知识巩固, 顺便作为一个经验分享与交流的地方.&lt;/p&gt;
&lt;p&gt;第一篇文章, 就从&lt;strong&gt;如何搭建个人博客&lt;/strong&gt;开始!&lt;/p&gt;
&lt;h2 id="博客搭建"&gt;&lt;a href="#%e5%8d%9a%e5%ae%a2%e6%90%ad%e5%bb%ba" class="header-anchor"&gt;&lt;/a&gt;博客搭建
&lt;/h2&gt;&lt;p&gt;本质上, 搭建博客就是部署一个轻量化的个人网站, 如果要求不高, 完全可以使用&lt;a class="link" href="https://www.cnblogs.com" target="_blank" rel="noopener"
 &gt;博客园&lt;/a&gt;、&lt;a class="link" href="https://www.csdn.net" target="_blank" rel="noopener"
 &gt;CSDN&lt;/a&gt; 等现成的内容平台, 但作为一个&lt;strong&gt;喜欢折腾&lt;/strong&gt;的人, 我更希望能够拥有一个自己的独立站点.&lt;/p&gt;
&lt;h3 id="技术方案对比"&gt;&lt;a href="#%e6%8a%80%e6%9c%af%e6%96%b9%e6%a1%88%e5%af%b9%e6%af%94" class="header-anchor"&gt;&lt;/a&gt;技术方案对比
&lt;/h3&gt;&lt;p&gt;目前主流的独立博客方案大概分为两派：&lt;strong&gt;传统动态 CMS&lt;/strong&gt;（如 WordPress、Halo）和 &lt;strong&gt;静态站点生成器&lt;/strong&gt;（如 Hugo、Hexo）。由于静态站点不需要维护数据库，部署成本极低（甚至免费），我最终锁定了后者。&lt;/p&gt;
&lt;p&gt;常见的静态框架对比如下：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;框架&lt;/th&gt;
					&lt;th style="text-align: left"&gt;底层语言&lt;/th&gt;
					&lt;th style="text-align: left"&gt;编译速度&lt;/th&gt;
					&lt;th style="text-align: left"&gt;特点与优势&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Go&lt;/td&gt;
					&lt;td style="text-align: left"&gt;极快 🚀&lt;/td&gt;
					&lt;td style="text-align: left"&gt;上手快，零依赖，适合喜欢专注内容写作的人&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Hexo&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Node.js&lt;/td&gt;
					&lt;td style="text-align: left"&gt;中等&lt;/td&gt;
					&lt;td style="text-align: left"&gt;中文社区庞大，插件丰富，但环境配置略繁琐&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Astro&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Astro.js&lt;/td&gt;
					&lt;td style="text-align: left"&gt;快&lt;/td&gt;
					&lt;td style="text-align: left"&gt;现代前端新宠，组件化强，适合有一定前端基础的玩家&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;VitePress&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Vue/Vite&lt;/td&gt;
					&lt;td style="text-align: left"&gt;快&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Vue 生态，文档风格利落，非常适合做技术文档&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;由于我对复杂的前端开发不太感冒, 且相对看重编译速度和本地环境的纯净度, &lt;strong&gt;Hugo&lt;/strong&gt; 成为了我的首选。&lt;/p&gt;
&lt;h2 id="环境准备与依赖安装"&gt;&lt;a href="#%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87%e4%b8%8e%e4%be%9d%e8%b5%96%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;环境准备与依赖安装
&lt;/h2&gt;&lt;p&gt;Hugo依赖于Go语言, 但从&lt;code&gt;v0.121.0&lt;/code&gt;起, Hugo已内置了Go工具链, 且包管理器能够自动处理依赖, 所以&lt;strong&gt;不管是手动安装二进制包还是使用包管理器安装的用户, 都可以跳过 Go 语言的安装部分&lt;/strong&gt; (除非需要安装其他依赖 Go 语言的软件)&lt;/p&gt;
&lt;p&gt;但是后续的代码托管与发布一定离不开Git, 因此, &lt;strong&gt;在安装 Hugo 之前, 我们必须先准备好Git&lt;/strong&gt;, 已经安装好了的读者则可以跳过这个部分.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;: 以下部分网站可能需要科学上网环境, 请自行准备所需工具.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="安装go语言"&gt;&lt;a href="#%e5%ae%89%e8%a3%85go%e8%af%ad%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;安装Go语言
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Windows系统&lt;/strong&gt;: 打开&lt;a class="link" href="https://go.dev/dl/" target="_blank" rel="noopener"
 &gt;Go 官网&lt;/a&gt;, 下载&lt;code&gt;*.msi&lt;/code&gt;安装包, 一路 Next 即可. 如果习惯使用包管理器&lt;code&gt;Scoop&lt;/code&gt;或者&lt;code&gt;Chocolatey&lt;/code&gt;, 也可以通过执行以下命令来安装&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install go
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;choco install golang
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;Linux系统&lt;/strong&gt;: 官方推荐使用&lt;code&gt;snap&lt;/code&gt;安装, 会自动处理依赖, 该步骤可跳过.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="安装git"&gt;&lt;a href="#%e5%ae%89%e8%a3%85git" class="header-anchor"&gt;&lt;/a&gt;安装Git
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Windows系统&lt;/strong&gt;: 前往&lt;a class="link" href="https://git-scm.com/install/windows" target="_blank" rel="noopener"
 &gt;Git 官网&lt;/a&gt;, 根据系统架构下载合适的安装包, 运行即可. 或使用包管理器:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Git.Git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;choco install git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;Linux系统&lt;/strong&gt;: 根据你的发行版执行对应命令:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 基于Debian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 基于Fedora&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo dnf install git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 基于Arch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syu git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="搭建-hugo-博客环境"&gt;&lt;a href="#%e6%90%ad%e5%bb%ba-hugo-%e5%8d%9a%e5%ae%a2%e7%8e%af%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;搭建 Hugo 博客环境
&lt;/h2&gt;&lt;h3 id="安装-hugo-本体"&gt;&lt;a href="#%e5%ae%89%e8%a3%85-hugo-%e6%9c%ac%e4%bd%93" class="header-anchor"&gt;&lt;/a&gt;安装 Hugo 本体
&lt;/h3&gt;&lt;p&gt;与上面类似, 我们依然可以通过安装包或者包管理器安装 Hugo, 需要注意一点, Hugo本身不带样式, 需要安装主题, 而&lt;em&gt;部分主题依赖于Extended版的Hugo&lt;/em&gt;, 所以在这一步中, &lt;strong&gt;推荐安装Extended版本的Hugo&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Windows环境&lt;/strong&gt;: 前往&lt;a class="link" href="https://github.com/gohugoio/hugo/releases" target="_blank" rel="noopener"
 &gt;Hugo的Git仓库&lt;/a&gt;, 下载Extended版本的Hugo即可. 或使用包管理器快速安装:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Hugo.Hugo.Extended
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scoop install hugo-extended
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;choco install hugo-extended
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;Linux环境&lt;/strong&gt;: 使用snap安装&lt;!--, 如果没有安装snap, 则请查看[这一篇文章]() --&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo snap install hugo --channel&lt;span class="o"&gt;=&lt;/span&gt;extended
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装完成后, 在终端里运行&lt;code&gt;hugo version&lt;/code&gt;, 只要输出版本号信息, 就说明大功告成!&lt;/p&gt;
&lt;h3 id="初始化项目"&gt;&lt;a href="#%e5%88%9d%e5%a7%8b%e5%8c%96%e9%a1%b9%e7%9b%ae" class="header-anchor"&gt;&lt;/a&gt;初始化项目
&lt;/h3&gt;&lt;p&gt;找一个合适的目录, 进入终端执行以下命令:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo new site my-blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; my-blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时, Hugo 已经生成了标准的目录结构:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;my-blog/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── archetypes # 文章默认模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── default.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── assets/ # 资源目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── content/ # 博客文章存放目录 ← 最重要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── data/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── hugo.toml # 主配置文件 ← 最重要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── i18n/ # 语言翻译
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── layouts/ # 自定义布局, 优先级高于主题
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── static/ # 静态资源(图片, 字体等)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── themes/ # 主题目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9 directories, 2 files
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="安装与配置主题"&gt;&lt;a href="#%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae%e4%b8%bb%e9%a2%98" class="header-anchor"&gt;&lt;/a&gt;安装与配置主题
&lt;/h3&gt;&lt;p&gt;Hugo 本身不带样式, 需要安装主题. 这里以极简风格的&lt;code&gt;Terminal&lt;/code&gt;主题为例:&lt;/p&gt;
&lt;p&gt;将主题作为 Git 子模块引入(强烈推荐这种方式, 方便后续更新):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git submodule add https://github.com/panr/hugo-theme-terminal.git themes/terminal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接着, 打开根目录下的&lt;code&gt;hugo.toml&lt;/code&gt;配置文件, 指定我们刚刚安装的主题, 并顺便修改一下基础配置:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;baseURL&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://localhost:1313&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# 沿用默认的本地调试地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;defaultContentLanguage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;zh-cn&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# 博客语言&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MowMark 的技术博客&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# 你的博客名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;terminal&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# 必须与 themes 目录下的文件夹名称一致&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;到这一步, 博客的底层搭建已经完成了99%&lt;/p&gt;
&lt;h2 id="本地预览"&gt;&lt;a href="#%e6%9c%ac%e5%9c%b0%e9%a2%84%e8%a7%88" class="header-anchor"&gt;&lt;/a&gt;本地预览
&lt;/h2&gt;&lt;p&gt;在项目根目录下执行:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server -D &lt;span class="c1"&gt;# -D 参数表示渲染草稿文章(draft: true)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;-D&lt;/code&gt; 参数表示渲染草稿文章(draft: true)&lt;/p&gt;

 &lt;/blockquote&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;hugo server&lt;/code&gt; 对应的常用参数还有 &lt;code&gt;--port 端口号&lt;/code&gt;, &lt;code&gt;--baseURL 域名&lt;/code&gt;等, 具体参数可以查看&lt;a class="link" href="https://hugo.opendocs.io/commands/hugo_server/" target="_blank" rel="noopener"
 &gt;hugo server&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;打开浏览器, 访问&lt;code&gt;http://localhost:1313&lt;/code&gt;, 就能看到个人博客已经在本地成功运行了!&lt;/p&gt;
&lt;p&gt;当然, 在本地运行是不够的, &lt;strong&gt;如何将它部署到公网上, 让所有人都能访问&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;这就需要用到GitHub Pages 和自动化的构建工具了.
由于篇幅原因, 这部分内容我会在&lt;a class="link" href="https://mowmark.github.io/mowmark_blog/website/hugo/001_githubpages/" &gt;使用GitHubPages部署博客&lt;/a&gt;中讲解.&lt;/p&gt;</description></item></channel></rss>