创建网站

一、准备

1
npm install -g hexo-cli

二、创建github仓库

  • 仓库名以.github.io结尾
  • 仓库权限要设置为public
  • 仓库名要和你的github用户名一样(受不了了为什么网上一些教程里这些东西提都没提 😭😭😭)

三、生成SSL Keys

  1. 在桌面git bash here,输入以下代码后enter四次

1
ssh-keygen -t rsa -C "邮件地址"
  1. 进入C:\Users\用户名,在里面进入.ssh文件,随便用一个编辑器打开,全选复制其中内容

  2. 打开github,进入用户设置,找到SSH keys,新建SSH keys,名称随意,在下面粘贴刚才复制的代码,然后创建

  3. git bash here后输入以下代码看是否成功:

1
ssh -T git@github.com

回车后如果还有要输入的就输yes

四、创建文件

  1. 随便找一个地方创建一个文件夹放blog文件的,在这个文件夹里git bash here

  2. 输入

1
hexo init

如果没成功就在前面加上npx,e.g.npx hexo init,下面同理

  1. 依次输入这三行命令

1
hexo install
1
hexo g
1
hexo s

理论上可以出现运行结果
然后选择这个网址右键后open即可,不要ctrl+C去复制否则就退出了

五、上线博客

  1. 进入之前的Blog文件夹,用记事本打开_config.yml,拉到最下面将deploy后面的全删掉,复制粘贴这段

1
2
3
type: git
repository:
branch: main

注意缩进格式:每行前面都有两个空格不要删,每个冒号后面都有个空格也不要删!
2. 去github之前生成的仓库页面,点code,复制https链接,将其粘贴到我们记事本中的repository:后面,然后保存退出
3. 回到博客文件夹,git bash here,安装自动部署发布工具(否则会报错"Deployer not found: git"):

1
npm install hexo-deployer-git --save

再依次

1
2
hexo g(生成)
hexo d(上传)

然后网站就部署成功了,网址就是:用户名.github.io

基础操作

一、更改网站资料

用记事本打开我们blog文件夹中的_config.yml文件,将#Site下面按自己的需求填上

1
2
3
4
5
6
7
8
## Site
title: 标题
subtitle: 副标题
description: 描述
keywords: 关键词
author: 站主
language: 语言(可以填写zh-CN)
timezone: 时区(可以填写Asia/Shanghai)

二、上传文章

在Blog文件夹中打开git bash,输入下方代码就可以生成新的文章md文件

1
hexo new 文章标题

文章是.md格式,在我们的Blog文件夹中的source/_posts中写好以后,我们还是一样打开git bash生成、上传

1
2
hexo g
hexo d

注意:以后再更新网站文件要连续输入:

1
hexo cl

运行结果

1
hexo g

运行结果

1
hexo d

运行结果
也可以先

1
2
hexo cl
hexo s

在本地查看

三、文章中添加图片

  1. 下载插件:

1
npm install hexo-asset-image --save
  1. 修改站点配置文件_config.yml
    把站点配置文件_config.yml中的post_asset_folder选项设为true,这样以后每次执行hexo new aaaa新增文章命令时,都会在_posts目录下生成aaaa.md文章和aaaa文件夹,md文章中引用图片使用相对路径格式,如下:

1
![logo](aaaa/logo.png)

这样在vscode编辑模式下既可以正常预览本地图片,同时,在执行完hexo g;hexo s命令运行服务后,网页端也能正常显示本地图片。

注意,今后如果修改了aaaa.md文件名,记得要同步修改同名文件夹。

  1. 修改hexo-asset-image插件的bug
    如果本地图片还不能正常先试试,说明hexo-asset-image插件的bug仍未修复,需要修改站点目录下node_modules\hexo-asset-image\index.js文件,找到if(/.*/index.html$/.test(link)) { 字段,大概在17行左右,添加对应的else if字段,如下:

1
2
3
4
5
6
7
8
9
10
if(/.*\/index\.html$/.test(link)) {
...
}
else if (link.charAt(link.length - 1) === '/') {
// link 是文件夹路径情形时
var endPos = link.length - 1;
}
else {
...
}

找到找到$(‘img’).each(function()){代码段,将其中的

1
2
$(this).attr('src', config.root + link + src);
console.info&&console.info("update link as:-->"+config.root + link + src);

改为相对路径引用:(此步可以不改,即generate后的站点采用的是绝对路径引用图片)

1
2
$(this).attr('src', src);
console.info&&console.info("update link as:-->" + src);

原文链接:https://blog.csdn.net/kantaiyang/article/details/129159055

四、切换主题

以butterfly为例

  1. 在git bash 中输入:

1
npm i hexo-theme-butterfly

安装成功后可在node_modules文件夹下找到hexo-theme-butterfly文件夹
2. 下载安装pug以及stylus的渲染器,这两个渲染器是Butterfly生成基础页面所需的依赖包

1
npm install hexo-renderer-pug hexo-renderer-stylus --save

在config.yml文件中找到theme项,改为butterfly,然后上传即可其他主题也可以在hexo官方文档中的主题文档中找各自文件的教程

同时为了减少升级主题后带来的不便,请使用以下方法(建议,可以不做,高度魔改的一般都不会升级主题了,不然魔改的会被覆盖掉)把主题文件夹中的 _config.yml 复制到 Hexo 根目录里(我这里路径为【C:/Hexo-Blog/blog-demo】),同时重新命名为 _config.butterfly.yml。以后只需要在 _config.butterfly.yml进行配置即可生效。Hexo会自动合併主题中的_config.yml_config.butterfly.yml里的配置,如果存在同名配置,会使用_config.butterfly.yml的配置,其优先度较高。

进阶操作

一、Front-matter

Front-matter 是 markdown 文件最上方以—分隔的区域,用于指定个别档案的变数。

  • Page Front-matter 用于页面配置

  • Post Front-matter 用于文章页配置
    如果标注可选的参数,可根据自己需要添加,不用全部都写

Page Front-matter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--- 
title:
date:
updated:
type:
comments:
description:
keywords:
top_img:
mathjax:
katex:
aside:
aplayer:
highlight_shrink:
---
写法 解释
title 【必需】页面标题
date 【必需】页面创建日期
type 【必需】标籤、分类和友情链接三个页面需要配置
updated 【可选】页面更新日期
description 【可选】页面描述
keywords 【可选】页面关键字
comments 【可选】显示页面评论模块(默认 true)
top_img 【可选】页面顶部图片
mathjax 【可选】显示mathjax(当设置mathjax的per_page: false时,才需要配置,默认 false)
kates 【可选】显示katex(当设置katex的per_page: false时,才需要配置,默认 false)
aside 【可选】显示侧边栏 (默认 true)
aplayer 【可选】在需要的页面加载aplayer的js和css,请参考文章下面的音乐 配置
highlight_shrink 【可选】配置代码框是否展开(true/false)(默认为设置中highlight_shrink的配置)

Post Front-matter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
---
title:
date:
updated:
tags:
categories:
keywords:
description:
top_img:
comments:
cover:
toc:
toc_number:
toc_style_simple:
copyright:
copyright_author:
copyright_author_href:
copyright_url:
copyright_info:
mathjax:
katex:
aplayer:
highlight_shrink:
aside:
---
写法 解释
title 【必需】文章标题
date 【必需】文章创建日期
updated 【可选】文章更新日期
tags 【可选】文章标籤
categories 【可选】文章分类
keywords 【可选】文章关键字
description 【可选】文章描述
top_img 【可选】文章顶部图片
cover 【可选】文章缩略图(如果没有设置top_img,文章页顶部将显示缩略图,可设为false/图片地址/留空)
comments 【可选】显示文章评论模块(默认 true)
toc 【可选】显示文章TOC(默认为设置中toc的enable配置)
toc_number 【可选】显示toc_number(默认为设置中toc的number配置)
toc_style_simple 【可选】显示 toc 简洁模式
copyright 【可选】显示文章版权模块(默认为设置中post_copyright的enable配置)
copyright_author 【可选】文章版权模块的文章作者
copyright_author_href 【可选】文章版权模块的文章作者链接
copyright_url 【可选】文章版权模块的文章连结链接
copyright_info 【可选】文章版权模块的版权声明文字
mathjax 【可选】显示mathjax(当设置mathjax的per_page: false时,才需要配置,默认 false)
katex 【可选】显示katex(当设置katex的per_page: false时,才需要配置,默认 false)
aplayer 【可选】在需要的页面加载aplayer的js和css,请参考文章下面的音乐 配置
highlight_shrink 【可选】配置代码框是否展开(true/false)(默认为设置中highlight_shrink的配置)
aside 【可选】显示侧边栏 (默认 true)

二、标签页

  1. 前往你的 Hexo 博客的根目录

  2. 输入 hexo new page tags

  3. 你会找到 source/tags/index.md 这个文件

  4. 修改这个文件:

记得添加 type: “tags”

1
2
3
4
5
6
7
---
title: 标签
date: 2018-01-05 00:00:00
type: "tags"
orderby: random
order: 1
---

orderby:name/random/length,注明排序顺序的
order: 1, asc for ascending; -1, desc for descending

三、分类页

  1. 前往你的 Hexo 博客的根目录

  2. 输入 hexo new page categories

  3. 你会找到 source/categories/index.md这个文件

  4. 修改这个文件:前往你的 Hexo 博客的根目录

记得添加 type: “categories”

1
2
3
4
5
---
title: 分类
date: 2018-01-05 00:00:00
type: "categories"
---

四、友链

  1. 前往你的 Hexo 博客的根目录

  2. 输入 hexo new page link

  3. 你会找到 source/link/index.md 这个文件

  4. 修改这个文件:

记得添加 type: “link”

1
2
3
4
5
---
title: 友情链接
date: 2018-06-07 22:17:49
type: "link"
---

在Hexo博客目录中的 source/_data(如果没有 _data 文件夹,请自行创建),创建一个文件 link.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- 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: 社交分享平台

五、图库/子页面

图库/子页面只是普通的页面,你只需要 hexo n page xxxxx 创建你的页面就行然后使用标签外挂 galleryGroup,具体用法请查看对应的内容

1
2
3
4
5
<div class="gallery-group-main">
{% galleryGroup '壁纸' '收藏的一些壁纸' '/Gallery/wallpaper' https://i.loli.net/2019/11/10/T7Mu8Aod3egmC4Q.png %}
{% galleryGroup '漫威' '关于漫威的图片' '/Gallery/marvel' https://i.loli.net/2019/12/25/8t97aVlp4hgyBGu.jpg %}
{% galleryGroup 'OH MY GIRL' '关于OH MY GIRL的图片' '/Gallery/ohmygirl' https://i.loli.net/2019/12/25/hOqbQ3BIwa6KWpo.jpg %}
</div>
1
2
3
4
5
6
7
8
9
10
{% gallery %}
![](https://i.loli.net/2019/12/25/Fze9jchtnyJXMHN.jpg)
![](https://i.loli.net/2019/12/25/ryLVePaqkYm4TEK.jpg)
![](https://i.loli.net/2019/12/25/gEy5Zc1Ai6VuO4N.jpg)
![](https://i.loli.net/2019/12/25/d6QHbytlSYO4FBG.jpg)
![](https://i.loli.net/2019/12/25/6nepIJ1xTgufatZ.jpg)
![](https://i.loli.net/2019/12/25/E7Jvr4eIPwUNmzq.jpg)
![](https://i.loli.net/2019/12/25/mh19anwBSWIkGlH.jpg)
![](https://i.loli.net/2019/12/25/2tu9JC8ewpBFagv.jpg)
{% endgallery %}

六、markdown拓展

hexo不支持Markdown的部分语法,比如表情包,所以需要安装其他插件

  1. 安装:

1
2
3
4
5
6
7
npm un hexo-renderer-marked --save
npm i hexo-renderer-markdown-it --save
npm install markdown-it-emoji --save
npm i markdown-it-checkbox
npm i markdown-it-imsize
npm i markdown-it-expandable

  1. 配置_config.yml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## markdown 渲染引擎配置,默认是hexo-renderer-marked,这个插件渲染速度更快,且有新特性
markdown:
render:
html: true
xhtmlOut: false
breaks: true
linkify: true
typographer: true
quotes: '“”‘’'
plugins:
- markdown-it-footnote
- markdown-it-sup
- markdown-it-sub
- markdown-it-abbr
- markdown-it-emoji
anchors:
level: 2
collisionSuffix: 'v'
permalink: false
permalinkClass: header-anchor
permalinkSymbol:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
markdown:
preset: "default"
render:
html: true
xhtmlOut: false
langPrefix: "language-"
breaks: true
linkify: true
typographer: true
quotes: "“”‘’"
enable_rules:
disable_rules:
plugins:
- markdown-it-abbr
- markdown-it-cjk-breaks
- markdown-it-deflist
- markdown-it-emoji
- markdown-it-footnote
- markdown-it-ins
- markdown-it-mark
- markdown-it-sub
- markdown-it-sup
- markdown-it-checkbox
- markdown-it-imsize
- markdown-it-expandable
- name: markdown-it-container
options: success
- name: markdown-it-container
options: tips
- name: markdown-it-container
options: warning
- name: markdown-it-container
options: danger
anchors:
level: 2
collisionSuffix: ""
permalink: false
permalinkClass: "header-anchor"
permalinkSide: "left"
permalinkSymbol: "¶"
case: 0
separator: "-"

参考https://blog.xaoxu.cn/archives/hexo-use-emojihttps://blog.csdn.net/qq_42951560/article/details/123596899?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172071017516800186579641%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=172071017516800186579641&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-123596899-null-null.142^v100^pc_search_result_base1&utm_term=hexo没有渲染markdown&spm=1018.2226.3001.4187

七、看板娘

以live2d为例子,先下插件

1
npm install --save live2d-widget-model-koharu

打开站点配置文件[BlogRoot]\config.yml
搜索live2d,按照如下注释内容指示进行操作。如果没有搜到live2d的配置项,就直接把以下内容复制到最底部。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Live2D
## https://github.com/EYHN/hexo-helper-live2d
live2d:
enable: true #开关插件版看板娘
scriptFrom: local # 默认
pluginRootPath: live2dw/ # 插件在站点上的根目录(相对路径)
pluginJsPath: lib/ # 脚本文件相对与插件根目录路径
pluginModelPath: assets/ # 模型文件相对与插件根目录路径
# scriptFrom: jsdelivr # jsdelivr CDN
# scriptFrom: unpkg # unpkg CDN
# scriptFrom: https://npm.elemecdn.com/live2d-widget@3.x/lib/L2Dwidget.min.js # 你的自定义 url
tagMode: false # 标签模式, 是否仅替换 live2d tag标签而非插入到所有页面中
debug: false # 调试, 是否在控制台输出日志
model:
use: live2d-widget-model-wanko # npm-module package name
# use: wanko # 博客根目录/live2d_models/ 下的目录名
# use: ./wives/wanko # 相对于博客根目录的路径
# use: https://npm.elemecdn.com/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json # 你的自定义 url
display:
position: right #控制看板娘位置
width: 150 #控制看板娘大小
height: 300 #控制看板娘大小
mobile:
show: true # 手机中是否展示
更换:

同样是在Hexo根目录[BlogRoot]下,打开终端,选择想要的看板娘进行安装,例如我这里用到的是 live2d-widget-model-koharu,一个Q版小正太。其他的模型也可以在模型预览里查看以供选择。

输入:

1
npm install --save live2d-widget-model-koharu

然后在站点配置文件[BlogRoot]_config.yml里找到model项修改为期望的模型

1
2
3
model:
use: live2d-widget-model-koharu
# 默认为live2d-widget-model-wanko
卸载:

卸载插件和卸载模型的指令都是通过npm进行操作的。在博客根目录[BlogRoot]打开终端,输入:

1
2
npm uninstall hexo-helper-live2d #卸载看板娘插件
npm uninstall live2d-widget-model-modelname #卸载看板娘模型。记得替换modelname为看板娘名称

卸载后为了保证配置项不出错,记得把[BlogRoot]_config.yml里的配置项给注释或者删除掉

主题配置

直接看大佬写的教程吧因为我懒,注意一下有些功能要下插件就行了
https://www.fomal.cc/posts/3451f874.htmlhttps://butterfly.js.org/posts/4aa8abbe/

问题

如果碰到:fatal: unable to access 'https://github.com/Hamilton2718/Hamilton.github.io.git/': Failed to connect to github.com port 443 after 21075 ms: Couldn't connect to server问题,可以参考这篇https://blog.csdn.net/m0_63230155/article/details/132070860

如果碰到:the remote end hung up unexpectedly问题可以参考,这篇https://blog.csdn.net/m0_52096593/article/details/129385459?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171983291716800185861227%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171983291716800185861227&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-129385459-null-null.142^v100^pc_search_result_base1&utm_term=the remote end hung up unexpectedly&spm=1018.2226.3001.4187