hexo-images-watermark自动添加水印,解决 ReferenceError: allImgFiles is not defined

我希望实现一个功能,在hexo搭建的博客中,在渲染过程中对图片自动添加水印,原图片保留。经查,发现轮子SpiritLingPub/hexo-images-watermark

但是,遇到了报错,ReferenceError: allImgFiles is not defined,在SpiritLingPub/hexo-images-watermark#43找到了同道中人。遗憾的是,该issue两年悬而未决。

如何解决

我修复了源码,并pr,截止发稿时作者尚未merage。

所以,我在npm发布了修复版本,仓库为BoyInTheSun/hexo-images-watermark,npm包名hexo-images-watermark-bits,卸载原有的包,改用该包即可。

用法详述

官方文档关于用法的描述不太清晰,我在这里整理下,以图片水印为例。

安装

在hexo根目录打开命令行。

1
npm install hexo-images-watermark-bits 

配置

在hexo根目录的/source文件夹放入watermark.png

_config.yml配置如下。其中pics为存放图片的路径,实际路径为/source/pics

1
2
3
4
5
6
7
8
watermark:
enable: true
imageEnable: true
rotate: 0
gravity: southeast
bigSkip: false
directory:
- pics

文章路径不要以/结尾,我的配置为:

1
permalink: posts/:hash.html

在文章中,图片路径为../pics/xxx.png,即可实现本地预览也可显示图片。

当然,这一步是可选的,而且会变更永久链接。也可以直接使用/pics/xxx.png

部署

hexo g后,source中的图片会自动拷贝至public,并添加水印,原图片不变。

见到Generated Image Success:即为成功。

故障剖析

经查,导致该bug的原因是作者的一次错误commit,误删了allImgFiles的定义,导致了未定义错误。可能是由于后续更新过程中仅测试了文字水印未测试图片水印,导致该问题一直未被发现。


hexo-images-watermark自动添加水印,解决 ReferenceError: allImgFiles is not defined
https://boyinthesun.cn/posts/66ebda0f7b2c.html
作者
BoyInTheSun
发布于
2025年3月30日
许可协议