距离上次更新(v1.6.2)已经过去了5个月,很抱歉2.0版本来得这么晚。本来想着在18年12月(PicGo一周年的时候)发布2.0版本,但是无奈正值研究生开题期间,需要花费不少时间(不然毕不了业了T T),所以这个大版本姗姗来迟。不过从这个版本开始,正式支持插件系统,发挥你们的无限想象,PicGo也能成为一个极致的效率工具。
除了发布PicGo 2.0本体,一同发布的还有PicGo-Core(PicGo 2.0的底层,支持CLI和API调用),以及VSCode的PicGo插件vs-picgo等。
插件系统PicGo的底层核心其实是PicGo-Core。这个核心主要就是一个流程系统。(它支持在Node.js环境下全局安装,可以通过命令行上传图片文件、也可以接入Node.js项目中调用api实现上传。)
PicGo-Core的上传流程如下:
Input一般是文件路径,经过Transformer读取信息,传入Uploader进行上传,最后通过 Output 输出结果。而插件可以接入三个生命周期(beforeTransform、beforeUpload、afterUpload)以及两种部件(Transformer和Uploader)。
换句话说,如果你书写了合适的Uploader,那么可以上传到不同的图床。如果你书写了合适的Transformer,你可以通过URL先行下载文件再通过Uploader上传等等。
另外,如果你不想下载PicGo的electron版本,也可以通过npm安装picgo来实现命令行一键上传图片的快速体验。
PicGo除了PicGo-Core提供的核心功能之外,额外给GUI插件给予一些自主控制权。
比如插件可以拥有自己的菜单项:
因此GUI插件除了能够接管PicGo-Core给予的上传流程,还可以通过PicGo提供的guiApi等接口,在插件页面实现一些以前单纯通过上传区实现不了的功能:
比如可以通过打开一个InputBox获取用户的输入:
可以通过打开一个路径来执行其他功能(而非只是上传文件):
甚至还可以直接在插件面板通过调用api实现上传。
另外插件可以监听相册里图片删除的事件:
这个功能就可以写一个插件来实现相册图片和远端存储里的同步删除了。
通过如上介绍,我现在甚至就已经能想到插件系统能做出哪些有意思的插件了。
比如:
结合GitHub刚刚开放的免费私人仓库,可以通过插件实现PicGo的相册以及配置文件同步。结合TinyPng等工具实现上传前给图片瘦身。(不过可能挺影响上传速度的。)结合一些Canvas工具,可以在上传图片前给图片加水印。通过指定文件夹,将文件夹内部的markdown里的图片地址进行图床迁移。等等。。希望这个插件系统能够给PicGo带来更强大的威力,也希望它能够成为你的极致的效率工具。
需要注意的是,想要使用PicGo 2.0的插件系统,需要先行安装Node.js环境,因为PicGo的插件安装依赖npm。
2.0其他更新内容除了上面说的插件系统,PicGo 2.0还更新了如下内容:
底层重构了之后,某些图床上传不通过base64值的将会提升不少速度。比如SM.MS图床等。而原本就通过base64上传的图床速度不变。增加一些配置项,比如打开配置文件(包括了上传的图片列表)、mini窗口置顶、代理设置等。在相册页可以选择复制的