hexo-matery与hexo-asset-image冲突问题

今天写博客的时候突然发生一件非常恶心的事情

我个人用的是matery主题,然后图片用了hexo-asset-image插件
一般来说流程是

  1. 配置_config.yml里面的post_asset_folder:false这个选项设置为true。
  2. 安装hexo-asset-image,运行hexo n “xxxx”来生成md博文时,/source/_posts文件夹内除了xxxx.md文件还有一个同名的文件夹,把图片放入该文件夹。
  3. 使用![](xxx.png)直接插入图片即可。

可真实情况是

img

生成图片的链接居然都变成了

1
/.io//1.png

img

重新hexo-clean,hexo-g也是一样的如下,太惨了

img

寻找解决办法

网上说原因是:

由于hexo3版本后对很多插件支持有问题,hexo-asset-image插件在处理data.permalink链接时出现路径错误,把年月去掉了,导致最后生成的路径为%d/xxx/xxx需要对其做兼容处理。通过判断当前版本是否等于3的版本做不同的路径分割。
反正和matery主题冲突了-我专门用了一个干净的环境也是一样的。

网上说改hexo-asset-image中的源码

改来改去确一直不生效,你说气不气

img

我的办法

这个插件中暑了,不如我们嗯嗯,卸载这个插件
npm uninstall hexo-asset-image
看看会发生啥
其实总的来说是正常的,只是url重复了,比如
我在markdown中写![](hexo-matery与hexo-asset-image冲突问题/5.jpg)
生成的url是/hexo-matery与hexo-asset-image冲突问题/hexo-matery与hexo-asset-image冲突问题/5.jpg
!!!!居然重复了一遍
纠结怎么改插件,不如把所有的![]({文件夹名}/x.jpg)改成![](x.jpg),虽然预览很恶心,但是hexo生成后没问题

写脚本

emm,终于觉得没白学python,一般我自己之前写了2中插入图片的语法,一种是![]({文件夹名}/x.jpg),一种是src="{文件夹啊名}/xx.jpg",所以通用脚本这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -- coding:utf-8 
import os
import re
#filePath='C:/Users/38138/Desktop/1'
filePath='C:/blog/source/_posts'
count=1
for file in os.listdir(filePath):
#title=file[0:-3]
print(file[-2:])
if file[-2:]=='md':
with open(os.path.join(filePath,file), "r+",encoding='utf-8') as f:
print(file)
old = f.read()
new_text=re.sub("!\\[[\\u4e00-\\u9fa5a-zA-Z0-9 \\-]*\\]\\([\\u4e00-\\u9fa5a-zA-Z0-9 \\-]*/","![](",old)
new_text1=re.sub("src=\"[\\u4e00-\\u9fa5a-zA-Z\\-1-9 ]*/","src=\"",new_text)
#print(new_text1)
f.seek(0)
f.truncate()
f.write(new_text1)
count+=1
print(count)

改之前记得备份!!!!