关于hexo-abbrlink2生成的数字ID混乱问题

我想要更简洁的hexo永久链接,于是安装了hexo-abbrlink2插件,可是在hexo clean之后,文章与ID对应完全混乱

插件逻辑

第一级:最高优先级 Front-matter(头文件)

1
if (data.abbrlink) { return data; }

可见如果.md文件顶部写了abbrlink: 26,插件直接将此ID分配给文章

第二级:文章级缓存 db.json 中的文章记录(软固定)

1
2
const cache = model.findById(data._id);
if (cache && typeof cache.maxid === 'number') { data.abbrlink = cache.maxid; return data; }

如果 Front-matter 里没写,插件就去 db.json 里找,看这篇文章以前是否被分配过 ID

hexo clean后,db.json被删除,本级无法找到ID

第三级:db.json读取目前分配过的最大ID+1

插件去 db.json 里找一个特殊记录(键名为 c-thiskeyusingbyabbrlink2),这个记录是分配过的最大 ID。

hexo clean后,db.json被删除,本级无法找到ID

第四级: _config.yml里设置的start值

hexo clean后,原有的对应关系丢失,这时如果hexo new就会导致新文章的ID再次从start+1开始,同时,就算不新建博客,当hexo clean删除了db.json,且文章 Front-matter 中没有abbrlink字段时,再次hexo g会因为文件读取顺序的不确定性导致 ID 对应关系混乱。

解决措施

不能不用hexo clean,于是在每篇文章的头文件中添加abbrlink: ID即可

为了每次new一个新文件,让他的头文件中都自带abbrlink:,可以修改scaffolds目录(文章模板)下的post.md

1
2
3
4
5
6
---
title: {{ title }}
date: {{ date }}
tags:
abbrlink:
---

关于hexo-abbrlink2生成的数字ID混乱问题
posts/2/
作者
ljw
发布于
2026年7月27日
许可协议