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