<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>weary</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://my-redenfine-hexo.pages.dev/</id>
  <link href="https://my-redenfine-hexo.pages.dev/" rel="alternate"/>
  <link href="https://my-redenfine-hexo.pages.dev/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, weary</rights>
  <subtitle>技术为主，生活为辅</subtitle>
  <title>weary's Blog</title>
  <updated>2026-09-09T15:38:38.042Z</updated>
  <entry>
    <author>
      <name>weary</name>
    </author>
    <category term="生活" scheme="https://my-redenfine-hexo.pages.dev/categories/%E7%94%9F%E6%B4%BB/"/>
    <category term="生活小记" scheme="https://my-redenfine-hexo.pages.dev/categories/%E7%94%9F%E6%B4%BB/%E7%94%9F%E6%B4%BB%E5%B0%8F%E8%AE%B0/"/>
    <category term="随笔" scheme="https://my-redenfine-hexo.pages.dev/tags/%E9%9A%8F%E7%AC%94/"/>
    <category term="记录" scheme="https://my-redenfine-hexo.pages.dev/tags/%E8%AE%B0%E5%BD%95/"/>
    <content>
      <![CDATA[<p>今晚博客正式开张，随便写点什么，算是留下第一笔。</p><p>一直想把学到的东西和日常的碎片找个地方放。收藏夹越攒越多，笔记散落在各种软件里，回头找的时候总是想不起来放在哪。索性自己搭个站，把东西写出来——能写清楚，才算真的弄明白了。</p><p>这个站大概会长成这样：</p><ul><li><strong>技术</strong>：踩过的坑、配过的环境、读过的源码，尽量写成能复现的教程；</li><li><strong>生活</strong>：吃到的好吃的、看到的风景、突然冒出来的念头，随手记下来。</li></ul><p>不追热点，不赶更新，想起来就写。如果你恰好路过，欢迎常来坐坐。</p>]]>
    </content>
    <id>https://my-redenfine-hexo.pages.dev/2026/09/05/2026-09-05-blog-open-note/</id>
    <link href="https://my-redenfine-hexo.pages.dev/2026/09/05/2026-09-05-blog-open-note/"/>
    <published>2026-09-05T13:10:00.000Z</published>
    <summary>博客开张的第一篇生活小记：聊聊为什么要写博客，以及接下来想记录些什么。</summary>
    <title>开站小记：为什么要有这个博客</title>
    <updated>2026-09-09T15:38:38.042Z</updated>
  </entry>
  <entry>
    <author>
      <name>weary</name>
    </author>
    <category term="技术" scheme="https://my-redenfine-hexo.pages.dev/categories/%E6%8A%80%E6%9C%AF/"/>
    <category term="环境配置" scheme="https://my-redenfine-hexo.pages.dev/categories/%E6%8A%80%E6%9C%AF/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/"/>
    <category term="Hexo" scheme="https://my-redenfine-hexo.pages.dev/tags/Hexo/"/>
    <category term="Redefine" scheme="https://my-redenfine-hexo.pages.dev/tags/Redefine/"/>
    <category term="Cloudflare" scheme="https://my-redenfine-hexo.pages.dev/tags/Cloudflare/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>本站基于 <strong>Hexo 8 + Redefine 主题</strong> 搭建，托管在 Cloudflare Pages 上，全程纯静态、零运维。这篇文章记录完整搭建过程，也作为后续环境配置类文章的模板示例。</p><h2 id="环境准备"><a href="#环境准备" class="headerlink" title="环境准备"></a>环境准备</h2><p>硬性要求：Node.js ≥ 20.19.0（Hexo 8 的 engines 要求）。</p><div class="code-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="code"><pre><span class="line">node -v   <span class="comment"># v24.11.1</span></span><br><span class="line">npm -v    <span class="comment"># 11.6.2</span></span><br><span class="line">git --version</span><br></pre></td></tr></table></figure></div><h2 id="项目初始化"><a href="#项目初始化" class="headerlink" title="项目初始化"></a>项目初始化</h2><p><code>hexo init</code> 无法在非空目录执行，因此采用「临时目录初始化 + 拷贝合并」的三步方案：</p><div class="code-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 1. 在外层建临时空目录并初始化（跳过自动安装，稍后统一装）</span></span><br><span class="line">npx --<span class="built_in">yes</span> hexo init hexo_tmp --no-install</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 全量拷贝进项目目录（docs/PRD.md 不会被覆盖）</span></span><br><span class="line"><span class="built_in">cp</span> -a hexo_tmp/. my_blog/ &amp;&amp; <span class="built_in">rm</span> -rf hexo_tmp</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 在项目目录安装依赖</span></span><br><span class="line">npm install</span><br></pre></td></tr></table></figure></div><h2 id="安装主题与功能插件"><a href="#安装主题与功能插件" class="headerlink" title="安装主题与功能插件"></a>安装主题与功能插件</h2><div class="code-container" data-rel="Bash"><figure class="iseeu highlight bash"><table><tr><td class="code"><pre><span class="line">npm install hexo-theme-redefine \</span><br><span class="line">  hexo-generator-searchdb hexo-generator-sitemap \</span><br><span class="line">  hexo-generator-feed hexo-wordcount hexo-cli -D</span><br></pre></td></tr></table></figure></div><p>然后在站点 <code>_config.yml</code> 里启用主题：</p><div class="code-container" data-rel="Yaml"><figure class="iseeu highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">theme:</span> <span class="string">redefine</span></span><br></pre></td></tr></table></figure></div><h2 id="覆盖式主题配置（核心规则）"><a href="#覆盖式主题配置（核心规则）" class="headerlink" title="覆盖式主题配置（核心规则）"></a>覆盖式主题配置（核心规则）</h2><p>Redefine 的所有自定义<strong>只写根目录 <code>_config.redefine.yml</code></strong>，不改动主题源文件，这样主题升级不会丢失配置。几个关键段落：</p><div class="code-container" data-rel="Yaml"><figure class="iseeu highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 主题色：青绿 + 暖金</span></span><br><span class="line"><span class="attr">colors:</span></span><br><span class="line">  <span class="attr">primary:</span> <span class="string">&quot;#14b8a6&quot;</span></span><br><span class="line">  <span class="attr">secondary:</span> <span class="string">&quot;#f59e0b&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 导航栏（图标是 FontAwesome 6 类名）</span></span><br><span class="line"><span class="attr">navbar:</span></span><br><span class="line">  <span class="attr">links:</span></span><br><span class="line">    <span class="string">首页:</span></span><br><span class="line">      <span class="attr">path:</span> <span class="string">/</span></span><br><span class="line">      <span class="attr">icon:</span> <span class="string">fa-solid</span> <span class="string">fa-house</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 首页横幅 + 打字机副标题</span></span><br><span class="line"><span class="attr">home_banner:</span></span><br><span class="line">  <span class="attr">image:</span></span><br><span class="line">    <span class="attr">light:</span> <span class="string">/img/top_img.svg</span></span><br><span class="line">    <span class="attr">dark:</span> <span class="string">/img/top_img.svg</span></span><br><span class="line">  <span class="attr">subtitle:</span></span><br><span class="line">    <span class="attr">text:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">技术为主，生活为辅</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 本地搜索（数据源由 hexo-generator-searchdb 生成 search.xml）</span></span><br><span class="line"><span class="attr">navbar:</span></span><br><span class="line">  <span class="attr">search:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 访问统计：vercount，不蒜子的兼容替代，免注册</span></span><br><span class="line"><span class="attr">global:</span></span><br><span class="line">  <span class="attr">website_counter:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure></div><p><strong>一个深合并陷阱</strong>：<code>_config.redefine.yml</code> 与主题默认值是深度合并——默认存在的键不会被「留空」删除。比如默认导航自带 <code>Home</code> 项，想隐藏它必须显式覆盖为 <code>path: none</code>，否则导航栏会出现两个「首页」。</p><h2 id="页面模板：数据与页面分离"><a href="#页面模板：数据与页面分离" class="headerlink" title="页面模板：数据与页面分离"></a>页面模板：数据与页面分离</h2><p>Redefine 的友链、相册、工具书签页都用「页面声明 + 数据文件」的模式，数据放 <code>source/_data/</code>：</p><table><thead><tr><th>页面</th><th>页面 front-matter</th><th>数据文件</th></tr></thead><tbody><tr><td>标签</td><td><code>template: tags</code></td><td>无需数据</td></tr><tr><td>分类</td><td><code>template: categories</code></td><td>无需数据</td></tr><tr><td>友链</td><td><code>template: links</code></td><td><code>_data/links.yml</code></td></tr><tr><td>相册</td><td><code>template: masonry</code></td><td><code>_data/masonry.yml</code>（瀑布流，建议写 width&#x2F;height）</td></tr><tr><td>工具书签</td><td><code>type: bookmarks</code></td><td><code>_data/bookmarks.yml</code>（左侧分类锚点自动生成）</td></tr></tbody></table><p>以友链为例，<code>source/link/index.md</code> 只需：</p><div class="code-container" data-rel="Markdown"><figure class="iseeu highlight markdown"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: 友链</span><br><span class="line"><span class="section">template: links</span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure></div><p>友链数据写在 <code>source/_data/links.yml</code>：</p><div class="code-container" data-rel="Yaml"><figure class="iseeu highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="attr">links_category:</span> <span class="string">框架与主题</span></span><br><span class="line">  <span class="attr">has_thumbnail:</span> <span class="literal">false</span></span><br><span class="line">  <span class="attr">list:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Hexo</span></span><br><span class="line">      <span class="attr">link:</span> <span class="string">https://hexo.io/</span></span><br><span class="line">      <span class="attr">avatar:</span> <span class="string">/img/links/hexo.png</span></span><br><span class="line">      <span class="attr">description:</span> <span class="string">快速简洁的静态博客框架</span></span><br></pre></td></tr></table></figure></div><p>404 页不用做——主题内置 generator 自动产出 <code>404.html</code>。</p><h2 id="自定义样式与特效注入"><a href="#自定义样式与特效注入" class="headerlink" title="自定义样式与特效注入"></a>自定义样式与特效注入</h2><p>主题没有开关的样式细节走 <code>inject</code> 注入。两个实战经验：</p><ol><li><strong>加载顺序</strong>：<code>inject.head</code> 注入的 CSS 排在主题样式<strong>之前</strong>，覆盖主题同名规则必须加 <code>!important</code>（比如关闭横幅容器的 <code>will-change: transform</code>，否则 GPU 合成层会让标题文字抗锯齿退化、看起来发虚）。</li><li><strong>swup 防重入</strong>：Redefine 的无刷新换页（swup）会重新执行注入脚本，特效脚本直接注入会在每次换页后叠加执行——粒子越来越密、监听器重复绑定。要用 <code>window</code> 标志位包一层「只初始化一次」的加载器。</li></ol><div class="code-container" data-rel="Yaml"><figure class="iseeu highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">inject:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">head:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;&lt;link rel=&quot;stylesheet&quot; href=&quot;/css/custom.css&quot;&gt;&#x27;</span></span><br><span class="line">  <span class="attr">footer:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;&lt;script src=&quot;/js/click-ripple.js&quot;&gt;&lt;/script&gt;&#x27;</span></span><br></pre></td></tr></table></figure></div><h2 id="部署到-Cloudflare-Pages"><a href="#部署到-Cloudflare-Pages" class="headerlink" title="部署到 Cloudflare Pages"></a>部署到 Cloudflare Pages</h2><p>推送到 GitHub 后，在 Cloudflare Pages 关联仓库即可自动构建：</p><ul><li>构建命令：<code>npx hexo generate</code></li><li>输出目录：<code>public</code></li><li>环境变量：<code>NODE_VERSION=24</code></li></ul><h2 id="问题排查"><a href="#问题排查" class="headerlink" title="问题排查"></a>问题排查</h2><ul><li><strong><code>hexo init</code> 报目录非空</strong>：按上面的三步方案处理。</li><li><strong>改了 <code>_config.redefine.yml</code> 预览不生效</strong>：hexo server 不监听主题覆盖配置，<code>Ctrl+C</code> 重启 <code>npx hexo server</code>；提示端口占用就换 <code>-p 4001</code>，或 <code>netstat -ano | findstr :4000</code> 找到 PID 后 <code>taskkill /F /PID</code> 清掉残留进程。</li><li><strong>代码块没有颜色</strong>：站点配置 <code>syntax_highlighter</code> 的注册名是 <code>highlight.js</code>（带 <code>.js</code>），写成 <code>highlight</code> 会导致高亮整体失效。</li><li><strong>外部图片裂图</strong>：结构小图（favicon、友链头像）一律下载入库放 <code>source/img/</code>，外链不可控。</li></ul><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>整体流程：初始化 → 主题与插件 → <code>_config.redefine.yml</code> 覆盖配置 → 页面模板与数据文件 → 特效注入 → 推送自动部署。规范先行（本文对应 <code>docs/PRD.md</code>），后续迭代按 PRD 版本记录滚动更新。</p><blockquote><p>后记：本站最初用 Butterfly 搭建，2026-09-06 迁移到 Redefine，本文已同步改写为现行技术栈。</p></blockquote>]]>
    </content>
    <id>https://my-redenfine-hexo.pages.dev/2026/09/05/2026-09-05-hexo-redefine-blog-setup/</id>
    <link href="https://my-redenfine-hexo.pages.dev/2026/09/05/2026-09-05-hexo-redefine-blog-setup/"/>
    <published>2026-09-05T13:00:00.000Z</published>
    <summary>从零开始用 Hexo + Redefine 搭建静态博客的完整流程：非空目录初始化、覆盖式主题配置、功能插件与页面模板接入、自定义特效注入与 Cloudflare Pages 部署要点。</summary>
    <title>用 Hexo + Redefine 搭建本站的全过程记录</title>
    <updated>2026-09-06T12:00:00.000Z</updated>
  </entry>
</feed>
