hexo 配上中文标题时,路径就将中文汉字转码,因此变得非常长。abbrlink 就是把这个长路径通过 crc 的校验算法,转化成固定的字符串,把长路径缩短成短路径,实现 SEO 优化。

hexo-asset-image 插件

hexo-asset-image 是将 Markdown 中的图片链接去掉目录部分而直接使用图片名的插件。其在源码中注释的功能如下:

image-20250718145406692

两者之间的冲突

若只使用 hexo-asset-image 插件,每个文章都会生成一个文件夹,在该文件夹下包含网页 html 文件和该文档中的图片,如下图所示。

image-20250718145734036

此时 html 可直接读取图片并引用。

添加 hexo-abbrlink 插件后,文件夹格式被改变,每一篇文章的图片放在了以文章代码命名一个文件夹中,如下图

image-20250718145950842

此时网页便无法加载图片了。

解决方法

打开 hexo-asset-image 插件文件夹:\node_modules\hexo-asset-img,找到index.js文件。

插入这两句代码,如下图所示。

image-20250718150311357

1
2
var abbrlink = data.abbrlink;
data.content = data.content.replace(regExp, "![$1](./" + abbrlink + "/$2)");

同时将这句代码注释掉:

1
// data.content = data.content.replace(regExp, "![$1]($2)", "g");

保存后使用hexo clean清除缓存,再次编译便可正确读取图片。