博客搭建
原理
用hexo+github page搭建.
hexo生成静态网页HTML,GitHub page展示HTML
github page
每个仓库都有一个pages服务,可用来展示项目,通过简单的设置项目的index.html,并以此做为入口供用户参观访问.
当然也可以用来跑博客. ^dca042
hexo
- hexo g:生成静态文件。将我们的数据和主题相结合生成静态文件的过程。
- hexo d:部署文件。部署主要是根据在 _config.yml 中配置的 git 仓库或者 coding 的地址,将 public 文件上传至 github 或者 coding 中。然后再根据上面的 github 提供的 pages 服务呈现出页面。
source储存md
themes储存主题
md+主题 生成静态HTML
hexo_repo文件下还有一个public的文件夹.执行hexo clean
,会清除public,执行hexo d
会生成public.还会生成.deploy_git
文件夹,这个文件夹就是我们部署到github或者gitee上面的文件.
只有public的文件才会上传到github.如果github page的结果不对,可能是hexo没有执行好hexo deploy
命令.
而hexo server
执行,依赖的不是public文件内容.可能会导致localhost展示结果与github page不同.source
->public
->.deploy_git
执行hexo generate
,根据source
,更新public
。
执行hexo deploy
,根据public
,更新.deploy_git
。是最优解1
2hexo clean
hexo g -d
详解Hexo搭建博客的底层原理搭建reference:
ubuntu 安装hexo
已经放弃,转windows hexo
由于是在git bash里面操作,没区别…可以直接参考ubuntu系统下的安装域名绑定:
https://blog.csdn.net/weixin_45961774/article/details/108402406
cpolar + PHP study
本地配置网站,再内网穿透到公网
不需要
我有ipv4
icarus修改
live2d
使用的是张书樵的live2d-widget
live2d模型添加
live2d模型库,超多色色
依赖cdn服务,直接从别人的服务器上拉取的live2d.所以hexo库里面并没有原生的live2d文件
好像要自己部署cdn服务,再调用api添加新的live2d模型
有点难度,暂时放弃,以后有机会接触到cdn,本地api部署再说
进阶修改
文章加宽
参考1
主要是修改三个文件\themes\icarus\include\style\responsive.styl
\themes\icarus\layout\layout.jsx
\themes\icarus\layout\common\widgets.jsx
responsive.styl
负责管理几个既定的参数 gap mobile tablet fullhd widescreen
layout.jsx
负责管理文章widgets.jsx
负责管理侧边栏
注意,使用的12块分配,
对于单侧边栏,
侧边栏+文章=12
对于双侧边栏,
侧边栏*2+文章=12
share管理
使用addtoany
搞不懂什么情况,实现不了,放弃
试试换成sharethis
在_config.yml中增加1
2share:
type: sharejs
在_config.icarus.yml中增加1
2share:
type: sharejs
对sharejs 的效果不满意,放弃share模块,有机会再搞
分享设置
- [ ] https://wiki.kunzhang.me/tech/%E5%91%A8%E8%BE%B9%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/hexo.html#widget
latex添加
参考1
参考2
问题:中间的下划线都会被识别为斜体符号,需要转义.
更改inline.js文件中的em行记得1
2//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,hexo clean
categories设置
categories 自动化
注意修改depth指定文章隐藏
https://github.com/im0o/hexo-generator-index-custom/blob/master/README_zh.md
https://blog.csdn.net/qq_42777659/article/details/126516780跳过某些文件hexo skip render设置
在_config.yml
中设置1
2
3skip_render:
- _posts/fleeting/**/**/**/*
- _posts/templates/*目录设置
在_config.yml
中开启在1
toc: true
_config.icarus.yml
中对于过长的标题,需要处理显示器不够大,目录无法完全显示的情况1
2
3
4
5
6
7
8
9
10
11
12widgets:
# 目录 小部件配置
-
# 小部件显示位置
position: left
type: toc
# 是否显示每个标题的索引
index: true
# 是否在看不到副标题时折叠副标题
collapsed: true
# 标题显示的最高水平
depth: 5
参考可滚动目录
参考图片添加
自定义css
对于前端三件套不熟悉,只能自己看这段代码只对2列的排版生效,不会对于三列排版生效.1
2
3
4
5
6
7
8.is-2-column {
background-image: url(/img/backgroud.png);
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
// background-color: #f5f5fa;
}
要改成1
2
3
4
5
6
7
8.is-3-column {
background-image: url(/img/backgroud.png);
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
// background-color: #f5f5fa;
}添加readmore功能
采用插件hexo-excerpt
github仓库实现文章根据最近的更新排序,而不是发布时间创建时间排序
修改node_modules\hexo-generator-index\lib\generator.js
中的内容
修改结果为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;
const pagination = require('hexo-pagination');
const { sort } = require('timsort');
module.exports = function(locals) {
const config = this.config;
const posts = locals.posts.sort(config.index_generator.order_by);
// sort(posts.data, (a, b) => (b.sticky || 0) - (a.sticky || 0));
posts.data = posts.data.sort(function(a, b) {
if(a.top && b.top) { // 当两篇文章top都有定义时
if(a.top == b.top) return b.updated - a.updated; // 若top值一样,则按照文章更新日期降序排列
else return b.top - a.top; // 否则按照top值降序排列
}
else if(a.top && !b.top) { // 以下两种情况是若只有一篇文章top有定义,则将有top的排在前面(这里用异或操作居然不行233)
return -1;
}
else if(!a.top && b.top) { //上一条已解释
return 1;
}
else return b.updated - a.updated; // 若都没定义,则按照文章更新日期降序排列
});
const paginationDir = config.pagination_dir || 'page';
const path = config.index_generator.path || '';
return pagination(path, posts, {
perPage: config.index_generator.per_page,
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};别人的icarus
Anne Wu配置
peiyingchi配置站点google收入
google console中验证站长的身份
验证身份部分可以google console中的引导或者看其他博客.添加sitemap
sitemap由插件辅助完成
在hexo目录下安装hexo-generator-sitemap
插件在1
npm install hexo-generator-sitemap --save
_config.yml
添加注意在1
2sitemap:
path: sitemap.xml_config.yml
,你应该设定好了自己的url
.
例如我的是hexo-generator-sitemap会根据这里的url生成xml文件.1
2
3
4author: l4rk
language: zh-CN
timezone: Asia/shanghai
url: http://domonnss.github.io
如果提示此位置的 Sitemap 不允许此网址。
,可能是因为生成的xml文件中的url与你的域名不同
xml中为1
2
3
4
5
6<url>
<loc>http://domonnss.github.io/2023/10/f85834e8ad59.html</loc>
<lastmod>2023-12-18</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
而我填入的站点地图为https://l4rk.cn/sitemap.xml
domonnss.github.io
与l4rk.cn
不是同一个域名.就会出现这个报错提示
修改_config,yml
的url为url: http://l4rk.cn
输入命令hexo clean && hexo g && hexo d
生成新的xml文件为1
2
3
4
5
6<url>
<loc>http://l4rk.cn/2023/10/f85834e8ad59.html</loc>
<lastmod>2023-12-18</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
当xml文件中的url与站点地图的网址域名相同时,就不会出现报错啦☺
等待几天时间,google就会收录网站
obsidian+hexo
把md推到github,再从github推到hexo,再在hexo上
要不把hexo配置到windows,要不放弃hexo,围绕obsidian配置博客
尝试用插件
选择在windows环境下重新配置hexo.
reference:
windows hexo+obsidian+github 写的特别棒
https://zhuanlan.zhihu.com/p/613429644
问题
hexo d 无法连接至github
更改_config.yml内容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
27l4rk@l4rkserver:~/hexo$ hexo d
INFO Validating config
Inferno is in development mode.
Inferno is in development mode.
INFO =======================================
██╗ ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗
██║██╔════╝██╔══██╗██╔══██╗██║ ██║██╔════╝
██║██║ ███████║██████╔╝██║ ██║███████╗
██║██║ ██╔══██║██╔══██╗██║ ██║╚════██║
██║╚██████╗██║ ██║██║ ██║╚██████╔╝███████║
╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
=============================================
INFO === Checking package dependencies ===
INFO === Checking theme configurations ===
INFO === Registering Hexo extensions ===
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
INFO Copying files from extend dirs...
On branch master
nothing to commit, working tree clean
fatal: unable to access 'https://github.com/domonnss/domonnss.github.io/': Failed to connect to github.com port 443 after 129455 ms: Connection timed out
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (/home/l4rk/hexo/node_modules/hexo-deployer-git/node_modules/hexo-util/lib/spawn.js:51:21)
at ChildProcess.emit (node:events:514:28)
at ChildProcess._handle.onexit (node:internal/child_process:294:12)
reference:
https://blog.csdn.net/weixin_48927364/article/details/123405585
hexo deploy 报错:
reference:
https://blog.csdn.net/nineya_com/article/details/103301870
完美解决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
34l4rk@l4rkserver:~/hexo$ hexo deploy
INFO Validating config
Inferno is in development mode.
Inferno is in development mode.
INFO =======================================
██╗ ██████╗ █████╗ ██████╗ ██╗ ██╗███████╗
██║██╔════╝██╔══██╗██╔══██╗██║ ██║██╔════╝
██║██║ ███████║██████╔╝██║ ██║███████╗
██║██║ ██╔══██║██╔══██╗██║ ██║╚════██║
██║╚██████╗██║ ██║██║ ██║╚██████╔╝███████║
╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
=============================================
INFO === Checking package dependencies ===
INFO === Checking theme configurations ===
INFO === Registering Hexo extensions ===
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
INFO Copying files from extend dirs...
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'l4rk@l4rkserver.(none)')
error: src refspec HEAD does not match any
error: failed to push some refs to 'https://github.com/domonnss/domonnss.github.io'
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (/home/l4rk/hexo/node_modules/hexo-deployer-git/node_modules/hexo-util/lib/spawn.js:51:21)
at ChildProcess.emit (node:events:514:28)
at ChildProcess._handle.onexit (node:internal/child_process:294:12)
github master与main的问题
https://juejin.cn/post/7135335154716770341
不知道为什么npm无法在git bash中使用
直接换成cnpm就行.
换源,清除缓存都失效…
每次hexo g -d github库中的CNAME都会不在
在/d/hexo_repo/source中添加 CNAME文件
Pio酱
和Tia酱
的模型不能像在其他网站看到的那样可以换装
reference:
https://akilar.top/posts/5b8f515f/
TypeError: Cannot read properties of null (reading ‘type’)
在原来的_config.icarus.yml文件中,由于注释语法不正确引起的1
2
3
4
5 # # 谷歌分析插件设置
# # https://analytics.google.com
# google_analytics:
# # Google Analytics tracking ID
# tracking_id:
多个#
注释,出现错误
修改注释方式或者直接删除注释内容就好了
高亮问题
==高亮== 语法,hexo无法为它添加高亮
使用`高亮`可以
效果:高亮
挂了代理之后,hexo d的出错
kex_exchange_identification: Connection closed by remote hostConnection closed
在储存ssh密钥的位置.我的windows上位置为C:\Users\28763\.ssh\
.增加config文件,内容为
1
2
3
4 Host github.com
HostName ssh.github.com
User git
Port 443
再次hexo d,会有一个弹窗出来,填入yes
就行