博客搭建
记录我是如何搭建本博客的一些关键过程。
Hexo
环境准备
安装 node ,检测安装成功:
1 | node --version |
安装 hexo :
1 | npm install -g hexo-cli # -g 全局安装 |
在某个新建文件夹里:
1 | hexo init 博客名 |
创建一篇文章:(删除暴力删就行,修改也是)
1 | hexo new '文章标题' |
那么文章就在 /source/_posts/
下,进行编辑即可
保存,生成静态网页:
1 | hexo g #generate |
本地启动:
1 | hexo s #server |
部署到 github ,先创建名为 用户名.github.io
的代码仓库,然后在项目 _config.yml
进行配置:
大概需要在代码仓库 setting 里开一下 page 选项
1 | deploy: |
安装插件:(参见帖子回复 这里)
1 | npm install hexo-deployer-git --save |
运行指令进行 commit 操作:
1 | hexo g -d #deploy |
在 20 分钟内按理来说 github 会进行更新。
进行一些全局修改:
1 | url: https://lr580.github.io/project #你的根目录变成了project;可以删掉project,那就少一层 |
主题安装
按照 README.md 指示进行安装和配置即可
一般来说,需要:
1 | git clone 主题github代码仓库 themes/主题名字 |
如:(建议用git的ssh协议,不要用https协议)
1 | $ git clone git@github.com:WongMinHo/hexo-theme-miho.git themes/miho |
修改全局 _config.yml
,如:
1 | theme: miho |
然后进到 themes/主题名字/_config.yml
,望文生义地修改对应东西即可。
主题调教
miho
主题下载在这里
友链图标
使用的是 awesome font ,只要是 这个网站 能找到的名字都可以扔进去
加载可能需要时间,所以首次加载可能会发现图裂,刷新几次就好了
修改目录排版
找到 source/css/_partial/article.styl
,在 .post-toc-wrap
下面加上 overflow-y: scroll
即可(为了美观,可以同时改一些别的属性,比如 width, max-height 之类的)
比如修改为:(仅展示修改了的代码)
1 | .post-toc-pos |
LaTeX支持
综合参考 这里 和 这里 ,记得每篇帖子都要加上开头那个地方 mathjax: true
如果预览测试看不到数学公式,考虑清理浏览器缓存如 ctrl+f5
图片支持
使用图床。例如 sm.ms
也可以不用,方法是:_config.yml
开启:
1 | post_asset_folder: true |
在这之后,每个帖子会在同目录下生成一个与帖子同名的目录(没有就自行创建),所有 Markdown 格式的图片的路径根目录都在该目录下。
为了适应 typora 配置,可以在其内部再新建一个名为 img 的目录,然后把图片放到里面。实现本地和网上都能预览。
只需要网上能预览的话,以帖子
标题名ab
为例,在_posts/标题名ab/c.png
,则直接打[](c.png)
这样的路径即可。也可以用支持缩放的 img html 标签如:
<img src="image-20221102125457754.png" alt="image-20221102125457754.png" style="zoom:100%;" />
,路径同理。如果上面不行可以用这种办法或将能行。
显然是支持中文路径的。特殊符号和空格没有测试过。
代码块支持
全局配置 _config.yml
:
1 | highlight: |
如果没有反应,可以重新编译试试:
1 | hexo cl #hexo clean |
具体的代码块配置望文生义即可,比如行号。而 auto_detect
是指没有标明代码块代码时自动检测,关了也行。
评论支持
使用 gitalk 。
不使用 gitment 是因为我没折腾成功。不使用其他是因为其他评论插件好像本来就死的差不多了,因为众所周知的原因,匿名交流是被限制的
可能需要安装,如:(大概是这么个指令,也有可能不用)
1 | npm i gitalk --save |
然后去注册一个 github oauth 在这里
其中 Homepage URL 是完整博客地址,如 https://lr580.github.io/
, Authorization callback URL
,如果不是自己买域名的话,即用 github 给的那个的话,填跟上面一样就行了。(如果是自己买域名的话自行百度,我没有细看),然后其他随便填
然后创建后会得到 Client ID 和 Client secrets,先记下来。
然后动手创建一个 gitalk 页面。找到自己的主题(如果本来就有就不用创建了),在 layout 文件夹下,找到帖子渲染对应的源码 (我的是 layout/_partial/article.ejs
),然后找到一个合适的位置(自己肉眼观察代码推断),看到是页尾,就加上:
1 | <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> |
当然根据需要,也可以嵌套在 if 里,如:
1 | <% } else if (theme.gitalk.enable) { %> |
然后去到主题的 _config.yml
,添加:
1 | gitalk: |
配好之后,重新生成页面即可:
1 | hexo g |
对代码仓库,要开启 issue (默认是开的),其实直接用论坛代码仓库就好了。注意 issue 不能是 close 的,不然不能作评论。原理上一篇 issue 对应一个帖子的评论区。每条 issue 里的回复就是帖子的一条回复。
注意,自己的 labels 是啥,那么新建 issue 就要加这个 labels (上文是 gitalk
) ,且再加上 id ,即新建一个有两个 label (分别是:gitalk
和 md5 加密的玩意)的,这样创建一个 open issue 就等于手动开启了一个帖子的评论区。
参考进行转换的 Python 代码:
1 | import urllib.parse |
帖子调教
多个tags
需要用 latex 无序列表格式隔开。单个无所谓。如:
1 | tags: |
也可以用 tags: [标签1, 标签2, ... , 标签n ]
标题日期
帖子开头的标题:
1 | --- |
如果与帖子的文件名不一样,文件名用作 URL,帖子标题用作首页显示和正文显示。
帖子 URL 的日期以 date 为准,更新帖子不影响日期。
最后更新: 2025年03月03日 16:07
原始链接: https://lr580.github.io/2022/05/12/%E5%BB%BA%E7%AB%99%E8%BF%87%E7%A8%8B%E8%AE%B0%E5%BD%95/