<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Reimu on Kuqilin&#39;s Blog</title>
    <link>https://www.kuqilin.top/yue/tags/reimu/</link>
    <description>Recent content from Kuqilin&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>yue</language>
    
    <managingEditor>kuqilin@outlook.com (Kuqilin)</managingEditor>
    <webMaster>kuqilin@outlook.com (Kuqilin)</webMaster>
    
    <copyright>本博客所有文章除特别聲明外，均采用 BY-NC-SA 許可協議。轉載請註明出處！</copyright>
    
    <lastBuildDate>Sat, 01 Aug 2026 17:15:02 +0800</lastBuildDate>
    
    
    <atom:link href="https://www.kuqilin.top/yue/tags/reimu/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
      
    

    <item>
      <title>Reimu 主题下的 i18n</title>
      <link>https://www.kuqilin.top/yue/post/hugo-reimu-i18n/</link>
      <pubDate>Sat, 01 Aug 2026 17:15:02 &#43;0800</pubDate>
      <author>kuqilin@outlook.com (Kuqilin)</author>
      <guid>https://www.kuqilin.top/yue/post/hugo-reimu-i18n/</guid>
      <description>
        <![CDATA[<h1>Reimu 主题下的 i18n</h1><p>作者：Kuqilin（kuqilin@outlook.com）</p>
        
          
  <blockquote class="alert-blockquote tips">
    <p class="alert-heading">
      Tips
    </p>
    <p><p>建议先通读本文了解基本流程和坑以后在一步一步跟着操作。<br>
因为作者表达能力欠佳，本文由作者写完之后交由 AI 进行润色。</p></p>
  </blockquote>

<p>虽然花时间翻译自己的文章并不常见，但既然做了，就记录一下完整流程，方便后来者。</p>
<h2 id="为什么需要手动配置">
<a class="header-anchor" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e6%89%8b%e5%8a%a8%e9%85%8d%e7%bd%ae"></a>
为什么需要手动配置？
</h2><p>Hugo 本身支持多语言（i18n），但主题通常需要你按约定组织文件和配置。Reimu 主题默认只提供单语言结构，要启用多语言，你需要做三件事：</p>
<ol>
<li>重构内容文件夹，按语言分目录</li>
<li>为每篇文章关联翻译（通过 <code>translationKey</code>）</li>
<li>在配置文件中声明语言，并（如果使用非内置语言）补充主题的本地化文案和翻译文件</li>
</ol>
<p>下面按步骤展开。</p>
<h2 id="第一步调整内容文件夹结构">
<a class="header-anchor" href="#%e7%ac%ac%e4%b8%80%e6%ad%a5%e8%b0%83%e6%95%b4%e5%86%85%e5%ae%b9%e6%96%87%e4%bb%b6%e5%a4%b9%e7%bb%93%e6%9e%84"></a>
第一步：调整内容文件夹结构
</h2><p>Reimu 主题默认将文章放在 <code>content/</code> 下（如 <code>content/post/</code>、<code>content/about.md</code> 等）。<br>
<strong>多语言时，需在 <code>content/</code> 下为每种语言单独建一个子文件夹</strong>，子文件夹名即为语言代码（如 <code>zh-CN</code>、<code>en</code>、<code>yue</code>）。</p>
<p><strong>操作示例</strong><br>
假设你原有简体中文内容（<code>zh-CN</code>），现在要增加英文（<code>en</code>）和粤语（<code>yue</code>）：</p>
<ol>
<li>在 <code>content/</code> 下新建 <code>zh-CN/</code>、<code>en/</code>、<code>yue/</code> 文件夹。</li>
<li>将原来 <code>content/</code> 下的所有内容（<code>about.md</code>、<code>post/</code> 等）<strong>整个移动或复制</strong>到 <code>zh-CN/</code> 内（作为默认语言）。</li>
<li>再将 <code>zh-CN/</code> 下的内容<strong>复制</strong>到 <code>en/</code> 和 <code>yue/</code> 中，之后分别翻译各文件夹内的 <code>.md</code> 文件。</li>
</ol>
<p>最终结构类似：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">content/
</span></span><span class="line"><span class="cl">├── en/
</span></span><span class="line"><span class="cl">│   ├── about.md
</span></span><span class="line"><span class="cl">│   ├── archives/
</span></span><span class="line"><span class="cl">│   ├── friend.md
</span></span><span class="line"><span class="cl">│   └── post/
</span></span><span class="line"><span class="cl">├── yue/
</span></span><span class="line"><span class="cl">│   ├── about.md
</span></span><span class="line"><span class="cl">│   ├── archives/
</span></span><span class="line"><span class="cl">│   ├── friend.md
</span></span><span class="line"><span class="cl">│   └── post/
</span></span><span class="line"><span class="cl">├── zh-CN/
</span></span><span class="line"><span class="cl">│   ├── about.md
</span></span><span class="line"><span class="cl">│   ├── archives/
</span></span><span class="line"><span class="cl">│   ├── friend.md
</span></span><span class="line"><span class="cl">│   └── post/
</span></span><span class="line"><span class="cl">└── zh-TW/          <span class="c1"># 可选，以此类推</span>
</span></span><span class="line"><span class="cl">    ├── about.md
</span></span><span class="line"><span class="cl">    ├── archives/
</span></span><span class="line"><span class="cl">    ├── friend.md
</span></span><span class="line"><span class="cl">    └── post/
</span></span></code></pre></div><blockquote>
<p><strong>注意</strong>：原 <code>content/</code> 根目录下不要再放置任何内容，否则 Hugo 会将其视为无语言归属的内容，可能引发混乱。</p>
</blockquote>
<h2 id="第二步关联不同语言版本translationkey">
<a class="header-anchor" href="#%e7%ac%ac%e4%ba%8c%e6%ad%a5%e5%85%b3%e8%81%94%e4%b8%8d%e5%90%8c%e8%af%ad%e8%a8%80%e7%89%88%e6%9c%actranslationkey"></a>
第二步：关联不同语言版本（translationKey）
</h2><p>Hugo 需要通过 <code>translationKey</code> 来识别哪些文件互为翻译。<br>
<strong>在每个语言的对应文件中，frontmatter 里写上相同的 <code>translationKey</code> 值</strong>。</p>
<p>例如，在 <code>content/zh-CN/about.md</code>、<code>content/en/about.md</code> 和 <code>content/yue/about.md</code> 中都加入：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">translationKey</span><span class="p">:</span><span class="w"> </span><span class="l">about</span><span class="w">
</span></span></span></code></pre></div><p>同样，每篇博文（如 <code>post/hello.md</code>）也要在所有语言版本中设置相同的 <code>translationKey</code>（可以设置为文章标题的 slug 或自定义标识）。</p>
<p><strong>为什么重要</strong>：没有这个字段，语言切换按钮将无法在文章页显示可切换的语言列表。</p>
<h2 id="第三步在-hugotoml-中声明语言">
<a class="header-anchor" href="#%e7%ac%ac%e4%b8%89%e6%ad%a5%e5%9c%a8-hugotoml-%e4%b8%ad%e5%a3%b0%e6%98%8e%e8%af%ad%e8%a8%80"></a>
第三步：在 <code>hugo.toml</code> 中声明语言
</h2><p>完成文件夹结构后，构建时 Hugo 会找不到语言定义而喜提报错。你需要在 <code>hugo.toml</code>（或 <code>config.toml</code>）中为每一种语言添加配置。</p>
<p><strong>基础配置示例</strong>（以粤语 <code>yue</code> 为例）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">languages</span><span class="p">.</span><span class="nx">yue</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="nx">locale</span> <span class="p">=</span> <span class="s2">&#34;yue&#34;</span>                <span class="c"># 语言代码，需与文件夹名一致</span>
</span></span><span class="line"><span class="cl">  <span class="nx">label</span> <span class="p">=</span> <span class="s2">&#34;粵語&#34;</span>                <span class="c"># 界面显示的语言名称（可自定义）</span>
</span></span><span class="line"><span class="cl">  <span class="nx">hasCJKLanguage</span> <span class="p">=</span> <span class="kc">true</span>         <span class="c"># 若语言包含中日韩文字，设为 true</span>
</span></span><span class="line"><span class="cl">  <span class="nx">contentDir</span> <span class="p">=</span> <span class="s2">&#34;content/yue&#34;</span>    <span class="c"># 指向该语言的内容文件夹</span>
</span></span><span class="line"><span class="cl">  <span class="nx">weight</span> <span class="p">=</span> <span class="mi">2</span>                    <span class="c"># 在语言切换列表中的排序，数值越小越靠前</span>
</span></span></code></pre></div><p><strong>其他语言</strong>（如英文）同理：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">languages</span><span class="p">.</span><span class="nx">en</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="nx">locale</span> <span class="p">=</span> <span class="s2">&#34;en&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">label</span> <span class="p">=</span> <span class="s2">&#34;English&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">hasCJKLanguage</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">  <span class="nx">contentDir</span> <span class="p">=</span> <span class="s2">&#34;content/en&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">weight</span> <span class="p">=</span> <span class="mi">3</span>
</span></span></code></pre></div><p><strong>设置默认语言</strong>（避免浏览器语言偏好干扰）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="nx">defaultContentLanguage</span> <span class="p">=</span> <span class="s2">&#34;zh-CN&#34;</span>   <span class="c"># 设为你的主语言</span>
</span></span></code></pre></div><blockquote>
<p>提示：<code>weight</code> 影响切换菜单中的顺序，建议为常用语言设较小值。</p>
</blockquote>
<h2 id="第四步处理主题未内置的自定义语言">
<a class="header-anchor" href="#%e7%ac%ac%e5%9b%9b%e6%ad%a5%e5%a4%84%e7%90%86%e4%b8%bb%e9%a2%98%e6%9c%aa%e5%86%85%e7%bd%ae%e7%9a%84%e8%87%aa%e5%ae%9a%e4%b9%89%e8%af%ad%e8%a8%80"></a>
第四步：处理「主题未内置」的自定义语言
</h2><p>Reimu 主题自带了一些 UI 文案（如“复制成功”），但只在部分语言（如 <code>en</code>、<code>zh-CN</code>、<code>ja</code> 等）中预置了翻译。<br>
如果你添加的语言不在主题支持列表中（例如泰文 <code>th</code>、粤语 <code>yue</code> 虽然主题可能未包含），则必须额外补充两处配置，否则构建时主题会因找不到对应语言的文案而报错。</p>
<h3 id="41-补充-paramsyml-中的文案翻译">
<a class="header-anchor" href="#41-%e8%a1%a5%e5%85%85-paramsyml-%e4%b8%ad%e7%9a%84%e6%96%87%e6%a1%88%e7%bf%bb%e8%af%91"></a>
4.1 补充 <code>params.yml</code> 中的文案翻译
</h3><p>主题的 UI 文案定义在 <code>themes/reimu/config/_default/params.yml</code> 中。<br>
你需要<strong>将这份文件复制到项目根目录的 <code>config/_default/params.yml</code></strong>（若没有则新建对应文件夹），然后在该文件中为你的语言添加所有字段。</p>
<p>例如，原文件中有 <code>clipboard.success</code> 字段：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yml" data-lang="yml"><span class="line"><span class="cl"><span class="nt">clipboard</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">success</span><span class="p">:</span><span class="w"> 
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">en</span><span class="p">:</span><span class="w"> </span><span class="l">Copy successfully (*^▽^*)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">zh-CN</span><span class="p">:</span><span class="w"> </span><span class="l">复制成功 (*^▽^*)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">yue</span><span class="p">:</span><span class="w"> </span><span class="l">複製成功 (*^▽^*)         </span><span class="w"> </span><span class="c"># 新增 yue 的翻译</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">zh-TW</span><span class="p">:</span><span class="w"> </span><span class="l">複製成功 (*^▽^*)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">ja</span><span class="p">:</span><span class="w"> </span><span class="l">コピー成功 (*^▽^*)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pt-BR</span><span class="p">:</span><span class="w"> </span><span class="l">Copiado com sucesso (*^▽^*)</span><span class="w">
</span></span></span></code></pre></div><p>你需要检查所有带 i18n 的字段（如 <code>comment.title</code>、<code>preloader.text</code> 等），逐一为你的语言添加对应值。<br>
<strong>注意</strong>：语言键（如 <code>yue</code>）必须与你在 <code>hugo.toml</code> 中 <code>[languages.yue]</code> 的 <code>locale</code> 值完全一致。</p>
<h3 id="42-创建独立的-i18n-翻译文件">
<a class="header-anchor" href="#42-%e5%88%9b%e5%bb%ba%e7%8b%ac%e7%ab%8b%e7%9a%84-i18n-%e7%bf%bb%e8%af%91%e6%96%87%e4%bb%b6"></a>
4.2 创建独立的 <code>i18n</code> 翻译文件
</h3><p>Hugo 本身需要一些基础翻译字符串（如月份名称、日期格式等），这些在主题的 <code>i18n/</code> 文件夹中提供。<br>
同样，将 <code>themes/reimu/i18n/</code> 下的某个现有文件（如 <code>zh-CN.yml</code>）复制到项目根目录的 <code>i18n/</code> 文件夹中，重命名为你的语言代码（如 <code>yue.yml</code>），然后将里面的字符串逐一翻译成你的语言。</p>
<p>如果不做这一步，Hugo 构建时会因为缺少翻译数据而报错（类似 <code>missing translations</code>）。</p>
<h2 id="常见问题">
<a class="header-anchor" href="#%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98"></a>
常见问题
</h2><ul>
<li>
<p><strong>切换语言后页面 404？</strong><br>
检查 <code>contentDir</code> 路径是否正确，且每个语言文件夹内确有对应文件。</p>
</li>
<li>
<p><strong>语言切换按钮不出现？</strong><br>
确认所有互为翻译的文件都设置了相同的 <code>translationKey</code>，且至少有两个语言版本存在。</p>
</li>
<li>
<p><strong>修改后仍报错？</strong><br>
运行 <code>hugo --cleanDestinationDir</code> 清除缓存后重新构建，有时旧配置会残留。</p>
</li>
<li>
<p><strong>只改 <code>params.yml</code> 还不够？</strong><br>
确保同时完成了 <strong>4.1</strong> 和 <strong>4.2</strong> 两步，缺一不可。</p>
</li>
</ul>
<h2 id="总结">
<a class="header-anchor" href="#%e6%80%bb%e7%bb%93"></a>
总结
</h2><p>Reimu 主题的 i18n 配置虽不复杂，但步骤环环相扣。简记要点：</p>
<ul>
<li>按语言分目录 → 加 <code>translationKey</code> → 声明语言配置</li>
<li>若使用非内置语言，额外补充主题 UI 文案（<code>params.yml</code>）和基础翻译（<code>i18n/*.yml</code>）</li>
</ul>
<p>按照上述步骤操作，你就能拥有一个完美切换的多语言 Hugo 站点。祝写作愉快！</p>

        
        <hr><p>本文2026-08-01首發於<a href='https://www.kuqilin.top/'>Kuqilin's Blog</a>，最後修改於2026-08-01</p><p>本博客所有文章除特别聲明外，均采用 BY-NC-SA 許可協議。轉載請註明出處！</p>]]>
      </description>
      
        <category>教程</category>
      
    </item>
    
      
    

    <item>
      <title>Hugo 搭建个人博客</title>
      <link>https://www.kuqilin.top/yue/post/hugo/</link>
      <pubDate>Sat, 11 Jul 2026 23:17:12 &#43;0800</pubDate>
      <author>kuqilin@outlook.com (Kuqilin)</author>
      <guid>https://www.kuqilin.top/yue/post/hugo/</guid>
      <description>
        <![CDATA[<h1>Hugo 搭建个人博客</h1><p>作者：Kuqilin（kuqilin@outlook.com）</p>
        
          
  <blockquote class="alert-blockquote tip">
    <p class="alert-heading">
      Tip
    </p>
    <p><p>请务必先通读全文再进行操作，避免一些不必要的错误。</p></p>
  </blockquote>

<h2 id="安装-hugo">
<a class="header-anchor" href="#%e5%ae%89%e8%a3%85-hugo"></a>
安装 Hugo
</h2><h3 id="windows">
<a class="header-anchor" href="#windows"></a>
Windows
</h3><p>前往官网下载 Hugo 的<code>exe</code>文件，随便找个位置放，然后把他添加到环境变量中即可。</p>
<h3 id="linux">
<a class="header-anchor" href="#linux"></a>
Linux
</h3><p>先安装 Hugo 的二进制文件，可以在官网上下载，也可以直接使用软件包管理器，考虑到<code>apt</code>更新极为缓慢，建议 Debian 系去官网下载<code>deb</code>包进行安装。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt install hugo    <span class="c1"># Debian 系</span>
</span></span><span class="line"><span class="cl">yay -S hugo              <span class="c1"># Arch 系</span>
</span></span></code></pre></div><p>安装完成后，执行<code>hugo version</code>会看到类似如下的提示：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">❯ hugo version  
</span></span><span class="line"><span class="cl">hugo v0.164.0-ce2470e7012b5ab5fc4e10ebe4027e9f8d9e00dc+extended linux/amd64 <span class="nv">BuildDate</span><span class="o">=</span>2026-07-06T16:39:30Z <span class="nv">VendorInfo</span><span class="o">=</span>gohugoio
</span></span></code></pre></div><p>即安装完成。</p>
<h2 id="创建项目">
<a class="header-anchor" href="#%e5%88%9b%e5%bb%ba%e9%a1%b9%e7%9b%ae"></a>
创建项目
</h2><p>我们使用<code>hugo new site &lt;项目名称&gt;</code>来创建项目，比如：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">❯ hugo new site myBlog  
</span></span><span class="line"><span class="cl">Congratulations! Your new Hugo site was created in /home/kuqilin/myBlog.  
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">Just a few more steps...  
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">1. Change the current directory to /home/kuqilin/myBlog.  
</span></span><span class="line"><span class="cl">2. Create or install a theme:  
</span></span><span class="line"><span class="cl">  - Create a new theme with the <span class="nb">command</span> <span class="s2">&#34;hugo new theme &lt;THEMENAME&gt;&#34;</span>  
</span></span><span class="line"><span class="cl">  - Install a theme from https://themes.gohugo.io/  
</span></span><span class="line"><span class="cl">3. Edit hugo.toml, setting the <span class="s2">&#34;theme&#34;</span> property to the theme name.  
</span></span><span class="line"><span class="cl">4. Create new content with the <span class="nb">command</span> <span class="s2">&#34;hugo new content &lt;SECTIONNAME&gt;/&lt;FILENAME&gt;.&lt;FORMAT&gt;&#34;</span>.  
</span></span><span class="line"><span class="cl">5. Start the embedded web server with the <span class="nb">command</span> <span class="s2">&#34;hugo server --buildDrafts&#34;</span>.  
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">See documentation at https://gohugo.io/.
</span></span></code></pre></div><p>可以看到成功的提示，接下来<code>cd</code>到项目文件夹<code>myBlog</code>，按照提示进行配置。</p>
<h2 id="创建或安装主题">
<a class="header-anchor" href="#%e5%88%9b%e5%bb%ba%e6%88%96%e5%ae%89%e8%a3%85%e4%b8%bb%e9%a2%98"></a>
创建或安装主题
</h2><p>显然，我们是可以自己创建主题的，但是为了<del>白嫖</del>方便，直接前往 <a href="https://themes.gohugo.io/">Hugo Themes</a> 下载一个称心的即可，这里选择了 <a href="https://themes.gohugo.io/themes/hugo-theme-reimu/">hugo-theme-reimu</a> 这个主题。</p>
<p>主题安装有几种方式，推荐使用 Git Submodule：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> myBlog
</span></span><span class="line"><span class="cl">git init
</span></span><span class="line"><span class="cl">git submodule add https://github.com/D-Sketon/hugo-theme-reimu.git themes/hugo-theme-reimu
</span></span></code></pre></div><p>也可以直接下载主题压缩包，解压到<code>themes</code>文件夹下。</p>
<p>然后在 <code>hugo.toml</code> 中指定主题：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="nx">theme</span> <span class="p">=</span> <span class="s2">&#34;hugo-theme-reimu&#34;</span>
</span></span></code></pre></div><h2 id="配置-hugo-theme-reimu">
<a class="header-anchor" href="#%e9%85%8d%e7%bd%ae-hugo-theme-reimu"></a>
配置 hugo-theme-reimu
</h2><p>主题的配置文件默认在 <code>themes/hugo-theme-reimu/config/_default/</code> 下。我们不应该直接修改主题文件，因为更新主题时会将其覆盖掉，所以应该在项目根目录的 <code>config/_default/</code> 下创建同名文件来覆盖。我们把<code>params.yml</code>（主题参数）复制即可。</p>
<h3 id="基础站点配置hugotoml">
<a class="header-anchor" href="#%e5%9f%ba%e7%a1%80%e7%ab%99%e7%82%b9%e9%85%8d%e7%bd%aehugotoml"></a>
基础站点配置（hugo.toml）
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="nx">baseURL</span> <span class="p">=</span> <span class="s1">&#39;https://&lt;你的用户名&gt;.github.io/&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nx">theme</span> <span class="p">=</span> <span class="s2">&#34;hugo-theme-reimu&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nx">title</span> <span class="p">=</span> <span class="s2">&#34;xxx&#39;s Blog&#34;</span>       <span class="c"># 站点标题</span>
</span></span><span class="line"><span class="cl"><span class="nx">locale</span> <span class="p">=</span> <span class="s2">&#34;zh-CN&#34;</span>           <span class="c"># 语言</span>
</span></span><span class="line"><span class="cl"><span class="nx">languageName</span> <span class="p">=</span> <span class="s2">&#34;简体中文&#34;</span>   <span class="c"># 语言名称</span>
</span></span><span class="line"><span class="cl"><span class="nx">hasCJKLanguage</span> <span class="p">=</span> <span class="kc">true</span>      <span class="c"># 是否包含 CJK 字符</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">markup</span><span class="p">.</span><span class="nx">highlight</span><span class="p">]</span>         <span class="c"># 语法高亮（含代码块必须）</span>
</span></span><span class="line"><span class="cl"><span class="nx">guessSyntax</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">noClasses</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">markup</span><span class="p">.</span><span class="nx">goldmark</span><span class="p">.</span><span class="nx">renderer</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">unsafe</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">markup</span><span class="p">.</span><span class="nx">goldmark</span><span class="p">.</span><span class="nx">extensions</span><span class="p">.</span><span class="nx">passthrough</span><span class="p">]</span> <span class="c"># 含数学公式必须</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">delimiters</span><span class="p">.</span><span class="nx">block</span> <span class="p">=</span> <span class="p">[[</span><span class="s2">&#34;\\[&#34;</span><span class="p">,</span> <span class="s2">&#34;\\]&#34;</span><span class="p">],</span> <span class="p">[</span><span class="s2">&#34;$$&#34;</span><span class="p">,</span> <span class="s2">&#34;$$&#34;</span><span class="p">]]</span>
</span></span><span class="line"><span class="cl"><span class="nx">delimiters</span><span class="p">.</span><span class="nx">inline</span> <span class="p">=</span> <span class="p">[[</span><span class="s2">&#34;\\(&#34;</span><span class="p">,</span> <span class="s2">&#34;\\)&#34;</span><span class="p">],</span> <span class="p">[</span><span class="s2">&#34;$&#34;</span><span class="p">,</span> <span class="s2">&#34;$&#34;</span><span class="p">]]</span>
</span></span></code></pre></div><p><code>unsafe = true</code> 允许在 Markdown 中直接使用 HTML，<code>passthrough</code> 用于支持数学公式的 <code>$...$</code> 和 <code>$$...$$</code> 语法。</p>
<h3 id="主题参数配置paramsyml">
<a class="header-anchor" href="#%e4%b8%bb%e9%a2%98%e5%8f%82%e6%95%b0%e9%85%8d%e7%bd%aeparamsyml"></a>
主题参数配置（params.yml）
</h3><p>在 <code>config/_default/params.yml</code> 中配置主题的各项功能，这里介绍几个关键项：</p>
<p><strong>导航菜单：</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">menu</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">home</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">archives</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;archives&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">about</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;about&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">friend</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;friend&#34;</span><span class="w">
</span></span></span></code></pre></div><p><strong>个人信息和头像：</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="l">&lt;你的名字&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">email</span><span class="p">:</span><span class="w"> </span><span class="l">&lt;你的邮箱&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">avatar</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;avatar.jpg&#34;</span><span class="w">           </span><span class="c"># 放在 static/avatar/ 下</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">banner</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;images/banner.webp&#34;</span><span class="w">   </span><span class="c"># 放在 static/images/ 下</span><span class="w">
</span></span></span></code></pre></div><p><strong>社交链接：</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">social</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">email</span><span class="p">:</span><span class="w"> </span><span class="l">mailto:&lt;你的邮箱&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">github</span><span class="p">:</span><span class="w"> </span><span class="l">https://github.com/&lt;你的用户名&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">twitter</span><span class="p">:</span><span class="w"> </span><span class="l">https://twitter.com/&lt;你的用户名&gt;</span><span class="w">
</span></span></span></code></pre></div><p><strong>侧边栏和小组件：</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">sidebar</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">position</span><span class="p">:</span><span class="w"> </span><span class="l">left </span><span class="w"> </span><span class="c"># 左右可选</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">widgets</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">category</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">tag</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">tagcloud</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">recent_posts</span><span class="w">
</span></span></span></code></pre></div><p><strong>评论区（以 Waline 为例）：</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">comment</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">default</span><span class="p">:</span><span class="w"> </span><span class="l">waline</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">waline</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">enable</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">serverURL</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;&lt;你的 Waline 服务地址&gt;&#34;</span><span class="w">
</span></span></span></code></pre></div><p><strong>启用功能：</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">toc</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">                </span><span class="c"># 目录</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">dark_mode</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">enable</span><span class="p">:</span><span class="w"> </span><span class="l">auto          </span><span class="w"> </span><span class="c"># 自动跟随系统</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">math</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">mathjax</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">enable</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">         </span><span class="c"># 数学公式</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">show_update_time</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">   </span><span class="c"># 显示更新时间</span><span class="w">
</span></span></span></code></pre></div><p>更多配置项（鼠标特效、Live2D、字体、加载动画等）请参考<a href="https://github.com/D-Sketon/hugo-theme-reimu">主题官方文档</a>。</p>
<p>配置完成后，运行 <code>hugo server -D</code> 即可在本地预览 <code>http://localhost:1313</code>。</p>
<h3 id="其他内容">
<a class="header-anchor" href="#%e5%85%b6%e4%bb%96%e5%86%85%e5%ae%b9"></a>
其他内容
</h3><p>其他内容，比如更改鼠标指针、修改字体、文章头图、文章封面、网站主题色、短代码、友链等等，请查看<a href="https://github.com/D-Sketon/hugo-theme-reimu">官方文档</a>，这里不再赘述。<del>嘻嘻</del></p>
<h2 id="部署到-github-pages">
<a class="header-anchor" href="#%e9%83%a8%e7%bd%b2%e5%88%b0-github-pages"></a>
部署到 GitHub Pages
</h2><p>部署的核心思路是把 Hugo 构建生成的 <code>public/</code> 目录推送到 <code>&lt;用户名&gt;.github.io</code> 仓库。GitHub Pages 会自动将这个仓库的内容作为静态网站发布。</p>
<p>也就是说，我们需要两个仓库：</p>
<ul>
<li><strong>源码仓库</strong>（如 <code>hugo-build</code>）：放 Hugo 项目源文件（Markdown、配置、主题等）</li>
<li><strong>页面仓库</strong>（<code>&lt;用户名&gt;.github.io</code>）：只放 <code>public/</code> 里的静态文件</li>
</ul>
<p>下面分别介绍手动推送和 GitHub Actions 自动推送两种方式。</p>
<h2 id="方式一手动推送到-githubio">
<a class="header-anchor" href="#%e6%96%b9%e5%bc%8f%e4%b8%80%e6%89%8b%e5%8a%a8%e6%8e%a8%e9%80%81%e5%88%b0-githubio"></a>
方式一：手动推送到 github.io
</h2><p>最直接的方式——在本地执行 <code>hugo</code> 构建，然后把 <code>public/</code> 目录的内容推到页面仓库。</p>
<h3 id="1-克隆页面仓库">
<a class="header-anchor" href="#1-%e5%85%8b%e9%9a%86%e9%a1%b5%e9%9d%a2%e4%bb%93%e5%ba%93"></a>
1. 克隆页面仓库
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone https://github.com/&lt;你的用户名&gt;/&lt;你的用户名&gt;.github.io.git public
</span></span></code></pre></div><p>如果 <code>public/</code> 目录已存在（Hugo 构建会生成），先删掉再克隆。</p>
<h3 id="2-构建并推送">
<a class="header-anchor" href="#2-%e6%9e%84%e5%bb%ba%e5%b9%b6%e6%8e%a8%e9%80%81"></a>
2. 构建并推送
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 回到源码仓库根目录，先构建</span>
</span></span><span class="line"><span class="cl">hugo
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 进入 public 目录（此时它已经是页面仓库的克隆）</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> public
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 提交并推送</span>
</span></span><span class="line"><span class="cl">git add .
</span></span><span class="line"><span class="cl">git commit -m <span class="s2">&#34;update&#34;</span>
</span></span><span class="line"><span class="cl">git push origin main
</span></span></code></pre></div><p>每次更新博客时，重复上面几步即可。</p>
<h3 id="3-写个脚本简化操作">
<a class="header-anchor" href="#3-%e5%86%99%e4%b8%aa%e8%84%9a%e6%9c%ac%e7%ae%80%e5%8c%96%e6%93%8d%e4%bd%9c"></a>
3. 写个脚本简化操作
</h3><p>可以把以上步骤写成一个脚本 <code>deploy.sh</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Building...&#34;</span>
</span></span><span class="line"><span class="cl">hugo
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Deploying...&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> public
</span></span><span class="line"><span class="cl">git add .
</span></span><span class="line"><span class="cl">git commit -m <span class="s2">&#34;update </span><span class="k">$(</span>date <span class="s1">&#39;+%Y-%m-%d %H:%M:%S&#39;</span><span class="k">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">git push origin main
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ..
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Done!&#34;</span>
</span></span></code></pre></div><p>以后只需运行 <code>bash deploy.sh</code> 就完成构建和部署了。</p>
<p>这种方式的优点是不依赖任何第三方 CI 服务，简单直接；缺点是需要手动执行，并且要保证本地 Hugo 环境正常。</p>
<h2 id="方式二github-actions-自动部署">
<a class="header-anchor" href="#%e6%96%b9%e5%bc%8f%e4%ba%8cgithub-actions-%e8%87%aa%e5%8a%a8%e9%83%a8%e7%bd%b2"></a>
方式二：GitHub Actions 自动部署
</h2><p>懒人必备——每次把源码推到 GitHub，剩下的构建和部署全交给 Actions 自动完成。</p>
<h3 id="1-创建-personal-access-token">
<a class="header-anchor" href="#1-%e5%88%9b%e5%bb%ba-personal-access-token"></a>
1. 创建 Personal Access Token
</h3><p>为了让 Actions 能够向页面仓库推送代码，需要一个 Token：</p>
<ol>
<li>GitHub → Settings → Developer settings → Personal access tokens → Tokens(classic)</li>
<li>生成新 Token，勾选 <code>repo</code> 和 <code>workflow</code> 权限</li>
<li>复制生成的 Token（注意：此 Token <strong>只显示一次</strong>，务必保存好）</li>
</ol>
<p>然后在<strong>源码仓库</strong>的 Settings → Secrets and variables → Actions 中新建一个 Secret，名称为 <code>TOKEN</code>，填入刚才复制的 Token。</p>
<h3 id="2-编写-workflow-文件">
<a class="header-anchor" href="#2-%e7%bc%96%e5%86%99-workflow-%e6%96%87%e4%bb%b6"></a>
2. 编写 Workflow 文件
</h3><p>在源码仓库根目录创建 <code>.github/workflows/hugo.yaml</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">deploy</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">on</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">push</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">branches</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">main</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">jobs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">deploy</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l">ubuntu-latest</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">steps</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Checkout</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l">actions/checkout@v4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">with</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">fetch-depth</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">submodules</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">       </span><span class="c"># 如果主题用 git submodule 安装，需要这行</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Setup Hugo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l">peaceiris/actions-hugo@v3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">with</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">hugo-version</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;latest&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">extended</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Build Web</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l">hugo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Deploy Web</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l">peaceiris/actions-gh-pages@v4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">with</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">PERSONAL_TOKEN</span><span class="p">:</span><span class="w"> </span><span class="l">${{ secrets.TOKEN }}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">EXTERNAL_REPOSITORY</span><span class="p">:</span><span class="w"> </span><span class="l">&lt;你的用户名&gt;/&lt;你的用户名&gt;.github.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">PUBLISH_BRANCH</span><span class="p">:</span><span class="w"> </span><span class="l">main</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">PUBLISH_DIR</span><span class="p">:</span><span class="w"> </span><span class="l">./public</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">commit_message</span><span class="p">:</span><span class="w"> </span><span class="l">auto deploy</span><span class="w">
</span></span></span></code></pre></div><p>各步骤说明：</p>
<table>
	<thead>
			<tr>
					<th>步骤</th>
					<th>作用</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>actions/checkout@v4</code></td>
					<td>拉取源码，<code>submodules: true</code> 同时拉取主题子模块</td>
			</tr>
			<tr>
					<td><code>peaceiris/actions-hugo@v3</code></td>
					<td>安装 Hugo 环境（extended 版支持 SCSS）</td>
			</tr>
			<tr>
					<td><code>hugo</code></td>
					<td>构建站点，生成 <code>public/</code> 目录</td>
			</tr>
			<tr>
					<td><code>peaceiris/actions-gh-pages@v4</code></td>
					<td>将 <code>public/</code> 推送到页面仓库</td>
			</tr>
	</tbody>
</table>
<h3 id="3-推送源码触发部署">
<a class="header-anchor" href="#3-%e6%8e%a8%e9%80%81%e6%ba%90%e7%a0%81%e8%a7%a6%e5%8f%91%e9%83%a8%e7%bd%b2"></a>
3. 推送源码触发部署
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git add .
</span></span><span class="line"><span class="cl">git commit -m <span class="s2">&#34;new post&#34;</span>
</span></span><span class="line"><span class="cl">git push origin main
</span></span></code></pre></div><p>每次 <code>push</code> 到 <code>main</code> 分支后，GitHub Actions 就会自动运行。可以在源码仓库的 Actions 标签页查看构建进度，绿色 ✅ 即为部署成功，随后访问 <code>https://&lt;你的用户名&gt;.github.io/</code> 就能看到更新后的博客。</p>
<h3 id="两种方式对比">
<a class="header-anchor" href="#%e4%b8%a4%e7%a7%8d%e6%96%b9%e5%bc%8f%e5%af%b9%e6%af%94"></a>
两种方式对比
</h3><table>
	<thead>
			<tr>
					<th></th>
					<th>手动推送</th>
					<th>GitHub Actions</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>操作</td>
					<td>本地跑 <code>hugo</code> + 手动 push</td>
					<td>只需 <code>git push</code> 源码</td>
			</tr>
			<tr>
					<td>依赖</td>
					<td>本地需安装 Hugo</td>
					<td>无需本地环境</td>
			</tr>
			<tr>
					<td>适用场景</td>
					<td>临时更新、不方便配 Actions</td>
					<td>日常写博客，自动化最省心</td>
			</tr>
			<tr>
					<td>复杂度</td>
					<td>⭐ 简单</td>
					<td>⭐⭐ 需配一次 Token 和 yaml</td>
			</tr>
	</tbody>
</table>
<p>两种方式不冲突，可以同时使用——配好 Actions 后日常自动部署，偶尔需要手动推也完全可以。</p>
<p>至此，Hugo 博客的搭建、配置和部署就全部完成了 🎉</p>

        
        <hr><p>本文2026-07-11首發於<a href='https://www.kuqilin.top/'>Kuqilin's Blog</a>，最後修改於2026-07-17</p><p>本博客所有文章除特别聲明外，均采用 BY-NC-SA 許可協議。轉載請註明出處！</p>]]>
      </description>
      
        <category>记录</category>
      
    </item>
    
  </channel>
</rss>
