hexo-images-watermark自动添加水印,解决 ReferenceError: allImgFiles is not defined
序
我希望实现一个功能,在hexo搭建的博客中,在渲染过程中对图片自动添加水印,原图片保留。经查,发现轮子SpiritLingPub/hexo-images-watermark。
但是,遇到了报错,ReferenceError: allImgFiles is not defined
,在SpiritLingPub/hexo-images-watermark#43找到了同道中人。遗憾的是,该issue两年悬而未决。
高端的反爬,往往仅需要最朴素的方式。本文来自BoyInTheSun.cn。
如何解决
我修复了源码,并pr,截止发稿时作者尚未merage。
所以,我在npm发布了修复版本,仓库为BoyInTheSun/hexo-images-watermark,npm包名hexo-images-watermark-bits
,卸载原有的包,改用该包即可。
用法详述
官方文档关于用法的描述不太清晰,我在这里整理下,以图片水印为例。
安装
在hexo根目录打开命令行。
1 |
|
配置
在hexo根目录的/source
文件夹放入watermark.png
。
在_config.yml
配置如下。其中pics
为存放图片的路径,实际路径为/source/pics
。
1 |
|
文章路径不要以/
结尾,我的配置为:
1 |
|
在文章中,图片路径为../pics/xxx.png
,即可实现本地预览也可显示图片。
当然,这一步是可选的,而且会变更永久链接。也可以直接使用/pics/xxx.png
。
部署
hexo g
后,source
中的图片会自动拷贝至public
,并添加水印,原图片不变。
见到Generated Image Success:
即为成功。
故障剖析
经查,导致该bug的原因是作者的一次错误commit,误删了allImgFiles
的定义,导致了未定义错误。可能是由于后续更新过程中仅测试了文字水印未测试图片水印,导致该问题一直未被发现。