如何正确使用安知鱼主题在 Hexo 上写博客
如何正确使用安知鱼主题在 Hexo 上写博客
老钱本文整理自 Hexo 官方文档 与 安知鱼主题官方文档,结合自己的踩坑经历,梳理出一条从「装环境」到「发文章」的完整路径。这也是本博客的第一篇文章。
写在前面:Hexo 与安知鱼是什么关系?
Hexo 是一个快速、简洁且高效的静态博客框架:用 Markdown 写文章,几秒内就能生成静态网页。它的核心逻辑包括文章、页面、分类、标签、主题渲染等。
安知鱼(AnZhiYu) 则是基于 Hexo 的一款「简单、美丽」的主题,由 安知鱼 开发维护,改自知名的 hexo-theme-butterfly。
官方文档有一句话值得默念三遍:
使用这个主题之前,你应该明白它是一个 Hexo 主题,它的基本逻辑离不开 Hexo。关于如何新建分类、如何新建标签这些问题,应该在使用之前就从互联网或官方文档了解详情。
也就是说:先有 Hexo,后有主题。Hexo 管「怎么写、怎么组织内容」,主题只管「长什么样」。理解了这一点,后面 90% 的问题都能自己定位。
安知鱼的主题特性非常丰富,挑几个日常写作最关心的:
- 页面组件懒加载(pjax)、图片懒加载
- 多种代码高亮方案、LaTeX 数学公式、mermaid 流程图
- 本地搜索 / Algolia 搜索
- 暗色模式、文章字数统计、AI 摘要
- 音乐球、瀑布流相册、即刻说说等娱乐功能
- 内置多款评论插件与访问统计
第一步:环境准备
按 Hexo 官方文档,只需要两个前置软件:
| 软件 | 要求 |
|---|---|
| Node.js | 不低于 10.13,建议 12.0 以上(Hexo 8.x 建议 20.19+) |
| Git | 任意较新版本 |
Windows 直接下载安装包即可(Node.js 安装时记得勾选 Add to PATH),然后全局安装 Hexo:
1 | npm install -g hexo-cli |
第二步:建站
找一个干净的目录,初始化博客:
1 | hexo init my-blog |
初始化完成后,整个博客的骨架就长这样:
1 | my-blog |
此时跑 hexo s 就能在 http://localhost:4000 看到默认主题的博客了。
第三步:安装安知鱼主题
推荐 GitHub 方式安装稳定版(在博客根目录执行):
1 | git clone -b main https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyu |
拉不下来可以用代理地址,或者直接去 release 页面 下载压缩包解压到 themes/anzhiyu。Hexo 5.0 以上也可以 npm i hexo-theme-anzhiyu。
然后做三件事:
1. 启用主题。 打开站点配置 _config.yml,修改:
1 | theme: anzhiyu |
2. 安装渲染插件。 安知鱼使用 pug 和 stylus,必须装对应渲染器:
1 | npm install hexo-renderer-pug hexo-renderer-stylus --save |
3. 建立覆盖配置(重要!)。 把 themes/anzhiyu/_config.yml 复制到博客根目录,重命名为 _config.anzhiyu.yml。以后所有主题改动都改这个文件,升级主题时不会丢配置:
1 | # macOS / Linux |
本地预览:
1 | hexo clean && hexo g && hexo s |
这里引出一个关键概念,也是官方文档反复强调的:
- 站点配置:博客根目录的
_config.yml,Hexo 全局生效。- 主题配置:
_config.anzhiyu.yml(推荐)或themes/anzhiyu/_config.yml。_config.anzhiyu.yml的优先级高于themes/anzhiyu/_config.yml;凡是存在于覆盖文件里的配置,改原文件是无效的。记牢「站点配置 ≠ 主题配置」,能避开一大半的配置玄学。
第四步:日常写作的正确姿势
新建文章与页面
1 | hexo new "我的第一篇文章" # 生成文章 → source/_posts/我的第一篇文章.md |
文章和页面是两种内容:文章有时间线,进首页列表、归档和 RSS;页面是独立的静态页(关于我、友情链接、标签页等),不随时间沉底。
吃透 Front-matter
每篇 .md 文件顶部用一对 --- 包裹的区域就是 front-matter,用 YAML 语法声明元信息:
1 |
|
几条保命语法规则:
---必须是文件第一行,前面不能有空行或字符;- 冒号后面必须有一个空格;
- 缩进只能用空格(推荐 2 个),不能用 Tab;
- 含
:、#、[等特殊字符的字符串加引号; tags、categories、published这几个字段只对文章有效,写在页面上会被直接忽略。
写作三件套命令
1 | hexo clean # 清除缓存(改配置后必跑) |
养成习惯:每次改完配置或文章,先 hexo clean 再 hexo g && hexo s,本地确认没问题再部署。
第五步:我的踩坑实录
既然是第一篇文章,就把自己踩的坑也记下来,希望能帮到后来者。
坑 1:top_img.indexOf is not a function
生成时报错,指向主题模板里对 top_img 调用字符串方法。原因是我在配置/front-matter 里写了裸的 top_img: true,而这版主题的模板只接受字符串路径或 false。改成下面任一写法即可:
1 | top_img: /img/index_top.jpg # 方案 A:给真实图片路径 |
教训:YAML 里 true 是布尔值不是字符串,模板拿到布尔值调 .indexOf 必炸。
坑 2:改了主题配置没生效
原因多半是你在 themes/anzhiyu/_config.yml 里改,但覆盖文件 _config.anzhiyu.yml 里存在同名配置,优先级更高,把改动盖掉了。想确认覆盖是否生效,可以 hexo g --debug 看输出。
坑 3:页面结果和本地不一致
页面效果一律以本地 hexo s 为准。部署后的异常大多是线上缓存,确认无报错后等一会儿刷新即可。
第六步:部署(可选)
Hexo 支持一键部署到 GitHub Pages 等平台,核心流程:
1 | npm install hexo-deployer-git --save |
然后在站点配置里填好仓库信息:
1 | deploy: |
之后一条命令完成部署:
1 | hexo clean && hexo g && hexo d |
写在最后
回过头看,这套流程其实就四件事:
- 装环境:Node.js + Git + hexo-cli;
- 装主题:git clone → 改
theme:→ 装 pug/stylus 渲染器 → 建覆盖配置; - 写文章:
hexo new→ 填好 front-matter → Markdown 正文; - 发出去:
hexo clean && hexo g && hexo d。
正如安知鱼文档所说,主题文档只讲主题范围内的用法,Hexo 本身的问题(分类、标签、命令)请回归 Hexo 官方文档。两份文档配合使用,才是最省时间的姿势。
参考资料
- Hexo 官方文档:https://hexo.io/zh-cn/docs/
- 安知鱼主题官方文档:https://docs.anheyu.com/intro.html
- 主题仓库:https://github.com/anzhiyu-c/hexo-theme-anzhiyu