Hexo教程
创建网站
一、准备
- 下载nodejs:https://npmmirror.com/mirrors/node/
- 下载git:https://git-scm.com/download
- 在命令行中输入
1 | npm install -g hexo-cli |
二、创建github仓库
- 仓库名以.github.io结尾
- 仓库权限要设置为public
- 仓库名要和你的github用户名一样(受不了了为什么网上一些教程里这些东西提都没提 😭😭😭)
三、生成SSL Keys
-
在桌面git bash here,输入以下代码后enter四次
1 | ssh-keygen -t rsa -C "邮件地址" |
-
进入C:\Users\用户名,在里面进入.ssh文件,随便用一个编辑器打开,全选复制其中内容
-
打开github,进入用户设置,找到SSH keys,新建SSH keys,名称随意,在下面粘贴刚才复制的代码,然后创建
-
git bash here后输入以下代码看是否成功:
1 | ssh -T git@github.com |
回车后如果还有要输入的就输yes
四、创建文件
-
随便找一个地方创建一个文件夹放blog文件的,在这个文件夹里git bash here
-
输入
1 | hexo init |
如果没成功就在前面加上npx,e.g.npx hexo init,下面同理
-
依次输入这三行命令
1 | hexo install |
1 | hexo g |
1 | hexo s |
理论上可以出现
然后选择这个网址右键后open即可,不要ctrl+C去复制否则就退出了
五、上线博客
-
进入之前的Blog文件夹,用记事本打开_config.yml,拉到最下面将deploy后面的全删掉,复制粘贴这段
1 | type: git |
注意缩进格式:每行前面都有两个空格不要删,每个冒号后面都有个空格也不要删!
2. 去github之前生成的仓库页面,点code,复制https链接,将其粘贴到我们记事本中的repository:后面,然后保存退出
3. 回到博客文件夹,git bash here,安装自动部署发布工具(否则会报错"Deployer not found: git"):
1 | npm install hexo-deployer-git --save |
再依次
1 | hexo g(生成) |
然后网站就部署成功了,网址就是:用户名.github.io
基础操作
一、更改网站资料
用记事本打开我们blog文件夹中的_config.yml文件,将#Site下面按自己的需求填上
1 | ## Site |
二、上传文章
在Blog文件夹中打开git bash,输入下方代码就可以生成新的文章md文件
1 | hexo new 文章标题 |
文章是.md格式,在我们的Blog文件夹中的source/_posts中写好以后,我们还是一样打开git bash生成、上传
1 | hexo g |
注意:以后再更新网站文件要连续输入:
1 | hexo cl |
1 | hexo g |
1 | hexo d |
也可以先
1 | hexo cl |
在本地查看
三、文章中添加图片
-
下载插件:
1 | npm install hexo-asset-image --save |
-
修改站点配置文件_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
文件名,记得要同步修改同名文件夹。
-
修改hexo-asset-image插件的bug
如果本地图片还不能正常先试试,说明hexo-asset-image
插件的bug仍未修复,需要修改站点目录下node_modules\hexo-asset-image\index.js
文件,找到if(/.*/index.html$/.test(link)) { 字段,大概在17行左右,添加对应的else if字段,如下:
1 | if(/.*\/index\.html$/.test(link)) { |
找到找到$(‘img’).each(function()){代码段,将其中的
1 | $(this).attr('src', config.root + link + src); |
改为相对路径引用:(此步可以不改,即generate后的站点采用的是绝对路径引用图片)
1 | $(this).attr('src', src); |
原文链接:hexo无法显示本地图片的问题
四、切换主题
以butterfly为例
-
在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
的配置,其优先度较高。
五、查看插件
在package.json里查看
进阶操作
一、Front-matter
Front-matter 是 markdown 文件最上方以—分隔的区域,用于指定个别档案的变数。
-
Page Front-matter 用于页面配置
-
Post Front-matter 用于文章页配置
如果标注可选的参数,可根据自己需要添加,不用全部都写
Page Front-matter:
1 |
|
写法 | 解释 |
---|---|
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 |
|
写法 | 解释 |
---|---|
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) |
二、标签页
-
前往你的 Hexo 博客的根目录
-
输入
hexo new page tags
-
你会找到 source/tags/index.md 这个文件
-
添加 type: “tags”
1 |
|
orderby:name/random/length,注明排序顺序的
order: 1, asc for ascending; -1, desc for descending
5. 在你想加标签的博客那里添加标签(记得要换行):
1 | tags: |
三、分类页
-
前往你的 Hexo 博客的根目录
-
输入
hexo new page categories
-
你会找到 source/categories/index.md这个文件
-
添加 type: “categories”
1 |
|
-
在你想加标签的博客那里添加分类(记得要换行):
1 | categories: |
tags一篇文章可以选多个,categories一篇文章只能有一个
四、友链
-
前往你的 Hexo 博客的根目录
-
输入
hexo new page link
-
你会找到 source/link/index.md 这个文件
-
修改这个文件:
记得添加 type: “link”
1 |
|
在Hexo博客目录中的 source/_data(如果没有 _data 文件夹,请自行创建),创建一个文件 link.yml
1 | - class_name: 友情链接 |
五、图库/子页面
图库/子页面只是普通的页面,你只需要 hexo n page xxxxx
创建你的页面就行然后使用标签外挂 galleryGroup,具体用法请查看对应的内容
1 | <div class="gallery-group-main"> |
1 | {% gallery %} |
六、markdown拓展
hexo不支持Markdown的部分语法,比如表情包,所以需要安装其他插件
-
安装:
1 | npm un hexo-renderer-marked --save |
-
配置
_config.yml
文件:
1 | ## markdown 渲染引擎配置,默认是hexo-renderer-marked,这个插件渲染速度更快,且有新特性 |
1 | markdown: |
七、butterfly主题外挂标签
可以参考这位大佬的文章:
Markdown语法与外挂标签写法汇总
先列出几个我感觉比较惊艳的:
-
Note
默认 提示块标签
default 提示块标签
primary 提示块标签
success 提示块标签
info 提示块标签
warning 提示块标签
danger 提示块标签
1 | {% note flat %}默认 提示块标签{% endnote %} |
八、Latex公式
在_config.butterfly.yml文件中更改以下配置:
1 | # MathJax |
mathjax和Katex只能设一个为true,注意嵌入数学公式时一定要$$+enter
后再输入,$$
和你的Latex代码在同一行会无法渲染,而vscode上的markdown插件由于包容性太好所以看不出这个问题,建议喜欢在vscode上写Markdown的同志可以下个typora检查,typora的渲染引擎更接近Hexo的渲染引擎。参考:
butterfly主题插入数学公式LaTeX
九、嵌入PDF
下载Hexo-PDF
插件,输入命令如下:
1 | npm install --save hexo-pdf |
将待嵌入pdf文件放在与md文档同名文件夹下,通过以下命令嵌入
1 | {% pdf document_name.pdf %} |
参考文章:Hexo竟然可以展示PDF
主题配置
直接看大佬写的教程吧因为我懒,注意一下有些功能要下插件就行了
https://www.fomal.cc/posts/3451f874.html 和 https://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
问题,可以参考这篇->
完美解决 git报错fatal: unable to access ‘https://github.com/…/.git‘:Recv failure Connection was reset -
如果碰到:
the remote end hung up unexpectedly
问题可以参考,这篇->
杂记——19.git上传时出现the remote end hung up unexpectedly错误 -
如果好久没用hexo有一天打开之后发现出现
bash: hexo: command not found
参考这篇->
完美解决 bash: hexo: command not found