<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hugo on farmer3-c Blog</title><link>https://farmer3-c.github.io/tags/hugo/</link><description>Recent content in Hugo on farmer3-c Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 28 Jun 2026 22:00:00 +0800</lastBuildDate><atom:link href="https://farmer3-c.github.io/tags/hugo/index.xml" rel="self" type="application/rss+xml"/><item><title>博客框架迁移：从 Jekyll 到 Hugo</title><link>https://farmer3-c.github.io/posts/blog-migration-to-hugo/</link><pubDate>Sun, 28 Jun 2026 22:00:00 +0800</pubDate><guid>https://farmer3-c.github.io/posts/blog-migration-to-hugo/</guid><description>告别 Jekyll，拥抱 Hugo 的简洁与速度</description><content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>之前的博客基于 <strong>Jekyll + Hux Blog 主题</strong>，用了快一年，总觉得不太顺手。Jekyll 是 Ruby 生态，本地构建慢，主题样式偏重（大图背景、多栏布局），对我这种只想简洁写文章的人来说有点臃肿。</p>
<p>于是决定迁移。目标是：</p>
<ul>
<li>🚀 <strong>更快的构建速度</strong></li>
<li>🎨 <strong>极简的页面风格</strong> —— 无背景图、干净利落</li>
<li>🔧 <strong>少折腾</strong> —— 配置简单，开箱即用</li>
<li>📝 <strong>保留所有文章和资源</strong></li>
</ul>
<p>最终选择了 <strong>Hugo + PaperMod 主题</strong>。</p>
<hr>
<h2 id="为什么选-hugo">为什么选 Hugo？</h2>
<table>
	<thead>
			<tr>
					<th>特性</th>
					<th>Jekyll</th>
					<th>Hugo</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>语言</td>
					<td>Ruby</td>
					<td>Go</td>
			</tr>
			<tr>
					<td>构建速度</td>
					<td>~5-10 秒</td>
					<td><strong>~250ms</strong></td>
			</tr>
			<tr>
					<td>安装</td>
					<td>需 Ruby + Gem</td>
					<td><strong>单二进制</strong></td>
			</tr>
			<tr>
					<td>配置</td>
					<td><code>_config.yml</code></td>
					<td><code>hugo.toml</code></td>
			</tr>
			<tr>
					<td>主题生态</td>
					<td>丰富</td>
					<td>丰富</td>
			</tr>
	</tbody>
</table>
<p>Hugo 最大的优势就是<strong>快</strong>——单二进制文件，没有任何依赖，构建 55 篇文章只要 250ms。PaperMod 主题默认就是白色极简风格，没有大图背景，几乎没有需要改动的地方。</p>
<hr>
<h2 id="迁移做了什么">迁移做了什么</h2>
<h3 id="1-文章转换55-篇">1. 文章转换（55 篇）</h3>
<p>原来的 Jekyll 文章格式：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">layout</span><span class="p">:</span><span class="w"> </span><span class="l">post</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Introduction to Linear Programing&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="ld">2025-09-14 23:54:39 +0800</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;farmer3-c&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">header-img</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;img/post-bg-2015.jpg&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</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="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>转换为 Hugo 格式：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Introduction to Linear Programing&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;2025-09-14T23:54:39+08:00&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;farmer3-c&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</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="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>主要变化：删掉了 <code>layout</code>、<code>header-img</code> 等 Jekyll 特有字段，日期改为 ISO 8601 格式。</p>
<h3 id="2-资源迁移">2. 资源迁移</h3>
<ul>
<li><code>img/</code> → <code>static/img/</code>（路径不变，文章中的图片引用不受影响）</li>
<li><code>pdf/</code> → <code>static/pdf/</code></li>
<li>删除了所有背景大图（<code>*-bg-*.jpg</code>）</li>
</ul>
<h3 id="3-功能集成">3. 功能集成</h3>
<table>
	<thead>
			<tr>
					<th>功能</th>
					<th>实现</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>评论区</td>
					<td>Utterances（基于 GitHub Issues）</td>
			</tr>
			<tr>
					<td>LaTeX</td>
					<td>MathJax 3 支持 <code>$..$</code>、<code>$$..$$</code></td>
			</tr>
			<tr>
					<td>搜索</td>
					<td>PaperMod 内置 Fuse.js</td>
			</tr>
			<tr>
					<td>标签</td>
					<td>自动标签页 <code>/tags/</code></td>
			</tr>
			<tr>
					<td>RSS</td>
					<td>自动生成 <code>/index.xml</code></td>
			</tr>
			<tr>
					<td>字体</td>
					<td>Times New Roman + 宋体</td>
			</tr>
			<tr>
					<td>深色模式</td>
					<td>自动跟随系统</td>
			</tr>
			<tr>
					<td>代码复制</td>
					<td>一键复制代码块</td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="新博客使用指南">新博客使用指南</h2>
<h3 id="环境准备">环境准备</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 安装 Hugo（Windows）</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 从 https://github.com/gohugoio/hugo/releases 下载 hugo_extended 版本</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 解压后添加到 PATH 即可</span>
</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">hugo version
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="本地预览">本地预览</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<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 server
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 浏览器访问 http://localhost:1313/</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 修改文件后自动刷新</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="新建文章">新建文章</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">hugo new content posts/my-new-post.md
</span></span></code></pre></td></tr></table>
</div>
</div><p>然后在 <code>content/posts/my-new-post.md</code> 中编辑：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</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="nt">description</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="nt">date</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;2026-06-28T23:00:00+08:00&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;farmer3-c&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">Tag1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">Tag2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">  </span><span class="c"># 如果用到 LaTeX 则启用</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">draft</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="添加图片">添加图片</h3>
<p>将图片放到 <code>static/img/</code> 目录下，在文章中引用：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">![<span class="nt">描述</span>](<span class="na">/img/your-image.png</span>)
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="添加-pdf">添加 PDF</h3>
<p>将 PDF 放到 <code>static/pdf/</code> 目录下：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">[<span class="nt">下载文档</span>](<span class="na">/pdf/filename.pdf</span>)
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="部署">部署</h3>
<p>推送到 GitHub 即可自动构建部署：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git add -A
</span></span><span class="line"><span class="cl">git commit -m <span class="s2">&#34;更新&#34;</span>
</span></span><span class="line"><span class="cl">git push origin main
</span></span></code></pre></td></tr></table>
</div>
</div><p>GitHub Actions 会自动运行 Hugo 构建，将 <code>public/</code> 目录部署到 GitHub Pages。</p>
<hr>
<h2 id="文件结构">文件结构</h2>
<pre tabindex="0"><code>farmer3-c.github.io/
├── hugo.toml              # 主配置文件
├── content/
│   ├── posts/             # 所有文章
│   ├── about/             # 关于页面
│   └── search.md          # 搜索页
├── static/
│   ├── img/               # 图片资源
│   ├── pdf/               # PDF 文件
│   └── CNAME              # 自定义域名
├── layouts/
│   └── partials/
│       ├── comments.html  # Utterances 评论
│       └── extend_head.html  # MathJax 3
├── assets/
│   └── css/extended/
│       └── custom.css     # 自定义样式
└── .github/workflows/
    └── hugo.yml           # 自动部署
</code></pre><hr>
<h2 id="总结">总结</h2>
<p>这次迁移大概花了一晚上的时间，最耗时的是 55 篇文章的格式转换和内部链接检查。迁移之后，博客构建速度从秒级降到了毫秒级，主题干净了很多，写文章的体验也好了不少。</p>
<p>希望这篇记录对想从 Jekyll 迁移到 Hugo 的朋友有帮助 😄</p>
]]></content:encoded></item></channel></rss>