Hexo 的 abbrlink 和 asset-img 图片路径兼容性冲突问题的解决方案
本文介绍 Hexo 的 abbrlink 插件和 hexo-asset-img 的图片兼容问题的解决方案
abbrlink 简介
简而言之,因为 blog 的目录比较深,要是配上中文标题,路径就会特别长,abbrlink
就是把这个长路径通过 crc
的校验算法,转化成固定的数字串,把长路径缩短成短路径,实现 SEO 优化
举例如下
原来是
https://blog.ericjuice.cn/posts/很长很长的日期/很长很长的名字.html
缩短后
https://blog.ericjuice.cn/posts/dda8c81b.html
安装方式可以参考这篇知乎文章
abbrlink 与 asset-img 的冲突
在之前的 blog 里我们介绍了 Hexo 使用 vscode 优雅地向 markdown 插入 html 标签的图片
使用 hexo-asset-img 插件,可以实现把本地图片资源放到博客文章的同名子目录下,hexo
渲染的时候就会把他弄到 html
的同目录下。改一下 js 之后就可以在本地和远程都成功预览
但是 abbrlink
添加之后,由于博客目录变了 (crc 算法导致的), 源文件中引用的图片路径就不可用了,为了兼顾图片的优雅插入和 abbrlink
的 SEO 优化,我们要改动一下 js 了.
解决方法
找到博客安装目录的 \node_modules\hexo-asset-img\index.js
找到 function action(data)
修改如下
注意: 如下的修改是配合我之前的
<img>
格式的图片,如果你不是这种格式,请根据var abbrlink = data.abbrlink;
这个变量自行修改原来的图片路径
1 | function action(data) { |
修改之后,就可以正常加载图片了
可能的问题
如果你跟我一样使用 vercel
部署的话,可能会在 vercel 上失效
我们禁止 vercel
的 build 即可,也就是删除他的 build 命令内容,让他直接使用我们本地生成的 public
的文件 (注意把 public
文件夹 push 到 github 上). 这样就可以所见即所得
参考文章: https://blog.csdn.net/zino00/article/details/122730090