hexo 博客更新
写在前面
距离上一篇文章【hexo 博客搭建】已经过去了两年多,在这期间 hexo 给我的使用体验很好,没出什么渲染上的乱子。不过随着 hexo 和 next 主题的升级,某天当我迁移 hexo 到新电脑上的时候突然发现原来的配置文件没法正常使用了,于是开始断更博客 (主要还是懒) 。这两天趁着摸鱼把博客用最新版的 hexo 和 next 重新搭了一遍,期间参考我自己写的文章,发现不少配置和插件都发生了变化,在这里记录一下。
hexo: 5.4.0 -> 5.4.2
hexo-theme-next: 7.8.0 -> 8.16.0
npm install -g 的问题
默认的 npm install -g hexo-cli 需要 root 权限(nt),npm install -i hexo-cli 是装在当前目录(随地拉屎)。可以在 shell 配置文件中加入如下内容
1 | export PATH=$PATH:$HOME/.npm/bin |
然后 npm install hexo-cli 会安装到 ~/.npm/ 目录下,完美解决问题。
评论系统的变化与选择
评论系统去掉了 valine,增加了 utterances。不巧,我原来一直用 valine,现在要换一个了。
排除掉国内的 changyan,剩下两类 disqus 和 github issue。选择了原始的 disqus,发现配置很方便,只要填入一项配置信息 shortname 即可。
图床 vs assets
之前在文章中插入图片需要把每张图片提前上传到图床,再将文章中对应图片的地址替换为图片在图床中的链接。这样操作有诸多不变,我列举三点:
寻找合适的图床不容易,自建图床维护成本高
手动替换链接不方便,写作软件自动替换丢失原有图片映射关系
图床链接失效后需要重传图片、更新链接
这次更新博客过程中已经发现不少图床的链接挂掉了(当然用的是免费图床)。配置 hexo 的过程中看到有一项配置是 post_asset_folder 引起了我的注意,查了一番文档,发现可以将照片作为 asset 随文章一同 post。配置过程如下。
在 _config.yml 中,设置 post_asset_folder: true。
理论上,现在就配置成功了。使用 hexo new post xxx 的时候会同时创建 source/_posts/xxx.md 和 source/_posts/xxx/,如果想在 xxx 中插入一张图片 1.jpg,只需将 1.jpg 放在 source/_posts/xxx/ 目录下,并用正常的 markdown 语法插入 。hexo 的默认渲染器 hexo-renderer-marked 会将  中 1.jpg 替换为 /public/path/to/xxx/1.jpg。
不过现在还有两个问题,一是 1.jpg 并不是常规的相对路径,本地的编辑器无法正常解析;二是由于我使用 hexo-theme-next 中的 mathjax,已经卸载了 hexo-renderer-marked,没人给我做路径替换了。
搜索一番,找到了插件 hexo-asset-img,可以完美解决以上两个问题。只需安装该插件即可 npm install hexo-asset-img --save。
对于博客链接的思考
之前的文章均使用 hexo-abbrlink 生成,好处显而易见,一篇文章的永久链接永远不会变,经过第一次计算后以元数据的方式保存在 markdown 文件的 yaml 头,同时使路径更浅(默认文章路径为 :year/:month/:day/:title/)。不过导致了另一个问题:生成的永久链接是无意义的。
权衡链接不变、链接深度与链接表意,我还是使用了 hexo 自带的路径设置组合 :year/:title/。在我不改变文章文件名和 :year/:title/ 设置本身的情况下,永久链接就不会变,同时保证较浅(二层)的深度。
这样的设定需要我对文章的文件名进行更精细的命名管理,因为它们会直接作为文章永久链接的一部分。
https://hexo.io/docs/permalinks
不用自己实现友链了
在上一版的 hexo 博客中,我使用自定义页面和一些奇怪的技巧实现了友链。不过在翻 next 文档的时候,发现了 link-grid 这个好东西。使用 link-grid 实现友链,只需一个正常的 source/links/index.md 文件即可。文件正文添加如下内容实现友链
1 | {% lg /images/avatar.gif %} |
放弃 hexo-auto-excerpt
这个插件似乎很久没有维护了。之前的使用感受也一般,它会将摘要内容渲染得乱七八糟,且完全没有换行。还是在文章中手动加 <!-- more --> 吧,还能选择合适的切断位置。
关于 hexo-douban
之前在使用中发现作者放弃了维护,也逐渐出现了一些问题,比如 pjax 开启时不能正常加载的问题。这次又去看了一眼,发现作者重新开始维护了。不过我还没打算重新启用。
https://github.com/mythsman/hexo-douban
发现的一些其他有用的东西
https://theme-next.js.org/docs/tag-plugins/group-pictures.html
可以用来做相册
https://theme-next.js.org/docs/tag-plugins/mermaid.html
可以画各种关系图
https://theme-next.js.org/docs/tag-plugins/pdf.html
可以在文章中插入 PDF 附件
https://github.com/D0n9X1n/hexo-blog-encrypt
可以对文章内容进行加密
TODO
- 添加留言版
- 添加个人介绍
- 添加相册
- 博客美化
- ...