2023-08-08
Hexoの千层套路
最开始,我想用jekyll搭建博客,然而由于看不懂Github上的英文文档,“轻松”放弃;之后,我听说hugo的速度很快,但是不知道怎么回事,主题一直配置不好,最后决定再也不搞博客了(嘿嘿)。发现hexo不错是在搜索Spotify电脑破解版时,发现了一个非常优质的博客“Ednovas的小站”。这个站就是借助hexo生成的,我的兴趣马上就来了。
不过事情并非那么简单,当我开始用hexo时,发现这个东西也没比hugo简单多少……
下载与配置
在Git Bash中配置自己的用户名和邮箱:
sh
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub注册邮箱"并生成SSH Key:
ssh-keygen -t rsa -C "你的GitHub注册邮箱"
找到生成的.ssh的文件夹中的id_rsa.pub密钥,将内容全部复制
然后使用winget安装hexo:$ npm install -g hexo-cli
在自己想存放博客文件夹的位置,输入hexo init 博客名称
网站配置
这里我直接使用了Github Pages的网站托管。先在Github新建一个仓库,注意名字必须是“你的Github用户名.github.io”。
打开Github设置中的“SSH and GPG keys”页面,新建一个SSH Key并把id_rsa.pub密钥内容粘贴上去:

在你的博客文件夹内,找到根目录下的_config.yml文件,修改deploy中的内容:
yml
deploy:
type: git
repo: 这里填入你之前在GitHub上创建仓库的完整路径,记得加上 .git
branch: main更换主题
这里我使用的是Butterfly主题。
在博客主题(theme)目录里,输入以下代码并删去.git文件即可:
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
接下来,把根目录下的_config.yml文件中的theme改为butterfly即可:
theme: butterfly
开始写作吧!
之后的配置因人而异,一般可以根据官方文档修改博客根目录下的_config.yml和theme目录下的_config.yml以自定义你的博客。
下面列出hexo的常用命令:
新建文章:hexo new "(文章标题)"
清除public文件夹中的内容:hexo clean
生成public文件夹的内容:hexo generate
部署到仓库:hexo deploy
在本地预览博客:hexo server
Butterfly主题的配置覆盖
在 hexo 的根目录创建一个文件 _config.butterfly.yml,Hexo 会自动合并主题中的 _config.yml 和 _config.butterfly.yml 里的配置,如果存在同名配置,会使用 _config.butterfly.yml 的配置,其优先度较高。
(25.11更新:我就是在“不小心”删除了整个博客文件夹后,找回了这个文件,大大减少了配置的工作量)
为你的博客创建一个友情链接吧!
友情链接页文件名不一定是 link, 例子中的 link 只是一个示例。记得添加 type: “link”
- 前往你的 Hexo 的根目录
- 输入 hexo new page link
- 你会找到 source/link/index.md 这个文件
- 修改这个文件,格式如下:
md
---
title: 友情链接
date: 2022-06-07 22:17:49
type: 'link'
---在 Hexo 根目录中的 source/_data(如果没有 _data 文件夹,请自行创建),创建一个文件 link.yml,并修改内容(下面是示例):
yml23 lines
- class_name: 友情链接
class_desc: 那些人,那些事
link_list:
- name: Hexo
link: https://hexo.io/zh-tw/
avatar: https://d33wubrfki0l68.cloudfront.net/6657ba50e702d84afb32fe846bed54fba1a77add/827ae/logo.svg
descr: 快速、简单且强大的网志框架
- class_name: 网站
class_desc: 值得推荐的网站
link_list:
- name: Youtube
link: https://www.youtube.com/
avatar: https://i.loli.net/2020/05/14/9ZkGg8v3azHJfM1.png
descr: 视频网站
- name: Weibo
link: https://www.weibo.com/
avatar: https://i.loli.net/2020/05/14/TLJBum386vcnI1P.png
descr: 中国最大社交分享平台
- name: Twitter
link: https://twitter.com/
avatar: https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png
descr: 社交分享平台不要忘记安装依赖
对于较新的butterfly版本,需要安装依赖才能编译出HTML文件:
pwsh9 lines
# 进入博客根目录
cd your-blog-folder
# 安装缺失的依赖
npm install
# 如果使用特定主题,确保主题依赖也安装了
cd themes/your-theme-name
npm install同时可能要安装Pug渲染器:
pwsh
# 进入博客根目录
cd your-blog-folder
# 安装 Pug 和 Stylus 渲染器
npm install hexo-renderer-pug hexo-renderer-stylus --save用HTML优化博客文章显示
标准的、纯粹的 Markdown 语法本身不支持设置文字的折叠和展开状态。Markdown 的设计初衷是生成静态的、语义化的文档结构,而不是交互式元素。
但是,有几种方法可以用HTML优化博客文章显示,让一段文字可以被折叠和展开。它们都依赖于将 Markdown 与 HTML 和/或 JavaScript 结合使用。
方法一:使用 HTML 的 <details> 和 <summary> 标签(最推荐)
这是最简单、最现代且无需 JavaScript 的解决方案。绝大多数现代浏览器都支持这个标签。
语法:
html13 lines
<details>
<summary>点击这里展开查看详情</summary>
这里是折叠起来的内容。
你可以在这里写 **Markdown** 或者 HTML。
因为它在 HTML 标签内,所以需要看你的 Markdown 处理器是否支持。
通常,像 GitHub Pages, Docsify, VitePress 等工具都支持。
- 列表项 1
- 列表项 2
`甚至可以写代码块`
</details>效果: 默认情况下,内容会是折叠状态。
点击这里展开查看详情
这里是折叠起来的内容。 你可以在这里写 Markdown 或者 HTML。 因为它在 HTML 标签内,所以需要看你的 Markdown 处理器是否支持。 通常,像 GitHub Pages, Docsify, VitePress 等工具都支持。- 列表项 1
- 列表项 2
甚至可以写代码块
设置默认展开状态
如果你希望它默认是展开的,可以使用 open 属性。
html
<details open>
<summary>这个部分默认是展开的</summary>
这些内容一开始就是可见的。
</details>效果:
这个部分默认是展开的
这些内容一开始就是可见的。开启博客字数统计功能
首先在博客根目录运行npm install hexo-wordcount --save安装字数统计插件。
然后在butterfly主题的_config.butterfly.yml中找到以下配置并修改:
yml9 lines
# Need to install the hexo-wordcount plugin
wordcount:
enable: true
# Display the word count of the article in post meta
post_wordcount: true
# Display the time to read the article in post meta
min2read: true
# Display the total word count of the website in aside's webinfo
total_wordcount: true为博客添加RSS订阅链接
在博客根目录下,输入$ npm install hexo-generator-feed --save
修改博客根目录下的_config.yml下feed中的内容,详情见官方README文件。
在主题_config.yml添加以下代码:rss: /atom.xml
为博客添加网站地图
网站地图就是网站的“内容清单”,把它提交给搜索引擎,可以帮助搜索引擎更好地理解网站结构,从而提高网站在搜索结果中的可见性。
使用 Hexo 官方插件 hexo-generator-sitemap
步骤 1:安装插件
在你的 Hexo 博客根目录下,打开终端或命令行,运行以下命令:
bash
npm install hexo-generator-sitemap --save步骤 2:配置 _config.yml
打开你的 Hexo 主配置文件 _config.yml,在任意位置添加以下配置:
yaml
# 网站地图 Sitemap
sitemap:
path: sitemap.xml
rel: false
tags: true
categories: truepath:sitemap.xml 文件的输出路径,默认为sitemap.xml,通常不需要修改。rel:是否为文章生成关联链接(如上一篇、下一篇),通常不需要,设为false。tags:是否将标签页列入站点地图。如果你的标签页内容有价值,建议设为true。categories:是否将分类页列入站点地图。同样,如果分类页内容有价值,建议设为true。
步骤 3:生成和部署
完成以上两步后,每次你执行 hexo generate 或 hexo deploy 时,插件都会自动在 public 目录下生成一个 sitemap.xml 文件。
- 本地预览: 执行
hexo clean && hexo g && hexo s,然后在浏览器中访问http://localhost:4000/sitemap.xml就能看到生成的网站地图。 - 部署: 像平常一样部署你的博客(例如
hexo d),sitemap.xml文件会被一并上传到的服务器。
向搜索引擎提交你的网站地图
生成了网站地图后,你需要主动告诉搜索引擎它的存在。
向 Google 提交
- 打开 Google Search Console。
- 选择你的网站资源。
- 在左侧菜单中,点击 “网站地图”。
- 在 “新网站地图” 框中,输入
sitemap.xml(如果你使用方法一)。 - 点击 “提交”。
向 Bing 提交
- 打开 Bing Webmaster Tools。
- 流程与 Google 类似,找到网站地图提交区域,提交
sitemap.xml。
额外提示:在网页中声明网站地图
虽然不是必须,但可以通过在 source 目录下创建一个 robots.txt 文件来声明网站地图。
- 在 Hexo 博客的
source目录下,创建robots.txt文件。 - 在文件中添加以下内容:
code
User-agent: *
Allow: /
Sitemap: https://你的域名/sitemap.xml
Sitemap: https://你的域名/baidusitemap.xml这样,搜索引擎爬虫在访问你的 robots.txt 时就会知道网站地图的位置。
参考资料:
1.https://zhuanlan.zhihu.com/p/26625249 2.https://hexo.io/zh-cn/ 3.https://butterfly.js.org/