当前位置: 首页 > news >正文

pcigo图床插件的简单开发

1.前言:在这里插入图片描述

  1. 如果想写一个图床并且投入使用,那么,接入picgo一定是一个不错的选择。picgo有着windows,mac,linux等多个客户端版本。实用且方便。

2. 开发的准备:

在这里插入图片描述

2.0. 需要安装一个node

node这里我就不详细说了,应该都会的。。。

2.1. 可选的开发模块

可以有5个模块进行开发

  • Transformer
  • Uploader
  • beforeTransformPlugins
  • beforeUploadPlugins
  • afterUploadPlugins

一般来说仅仅开发Uploader足够第三方图床的使用了

2.2. 项目目录

项目目录页非常简单,一般包含npm必要的package.json和入口文件index.js即可
那么

2.3. npm账号

因为picgo必须以其规定的名称发布npm包,才能在picgo调用你的图床

注册地址:https://www.npmjs.com/

使用npm login可以进行登录
在这里插入图片描述

2.4. 后端的上传接口:

已经写好的后端接口,我这里不再进行详细说明。

2. js插件包的开发:

  1. 使用npm init进行创建
npm init 

🌴注意: package name 必须使用picgo-plugin-<your-plugin-name>的格式,否则在picgo软件中无法安装你的插件。
在这里插入图片描述
2. 编写index.js文件

这个hander功能是把图片上传到你的后端。

const handle = async (ctx) => {const userConfig = ctx.getConfig('picBed.haowan-uploader');if (!userConfig) {throw new Error("Can't find uploader config");}const { url, token } = userConfig;const imgList = ctx.output;for (const img of imgList) {let image = img.buffer || (img.base64Image ? Buffer.from(img.base64Image, 'base64') : null);if (!image) {ctx.emit('notification', {title: '上传失败',body: '无法获取图片数据'});continue;}const postConfig = postOptions(url, token, img.fileName, image);const response = await ctx.request(postConfig);const body = JSON.parse(response);if (body.status === 200) {delete img.base64Image;delete img.buffer;img.imgUrl = body.data.outLink;} else {ctx.emit('notification', {title: '上传失败',body: body.message});throw new Error(body.message);}}return ctx;};const postOptions = (Url, Token, fileName, image) => {return {method: 'POST',url: Url + '/api/picgo/upload',headers: {'Content-Type': 'multipart/form-data',Accept: 'application/json',Authorization: Token,'User-Agent': 'PicGo'},formData: {fileName : fileName,image                }};};const config = () => {return [{name: 'url',type: 'input',default: '',required: true,message: '服务器域名',alias: '服务器域名'},{name: 'token',type: 'input',default: '',required: true,message: '获取的Token',alias: '获取的Token'}];};module.exports = (ctx) => {const register = () => {ctx.helper.uploader.register('haowan-uploader', {handle,config,name: '好玩图床插件'});};return {uploader: 'haowan-uploader',register};};
  1. 修改packjage.json
{"name": "picgo-plugin-haowan-uploader","version": "1.2.0","description": "好玩图床的pcigo上传插件","main": "./index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"repository": {"type": "git","url": "https://gitee.com/chenbaifu/picgo-plugin-haowan-uploader.git"},"keywords": ["picgo-gui-plugin"],"author": "wnzzer","license": "Apache 2.0"
}

如果你使用gui了的相关功能,哪怕是仅仅和我一样定义了配置图床参数的选项,也可以打上"keywords":
["picgo-gui-plugin"]的标签,这个标签代表着你对该插件进行了gui优化,

🌴这是没有优化的插件在picgo中显示
在这里插入图片描述

🌴这是优化后的插件,不显示cli了
在这里插入图片描述

  1. 设置log
    在工程目录中放置一张logo.png, picgo在拉取npm镜像时就可以自动读取。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    logo可以在插件显示。
  2. 上传npm包
npm publish

在这里插入图片描述
6. 安装使用

在插件设置里搜索安装就可以使用了。
在这里插入图片描述

http://www.lryc.cn/news/220152.html

相关文章:

  • Find My手机保护壳|苹果Find My与手机保护壳结合,智能防丢,全球定位
  • encode和decode的区别
  • 建设项目管理中的 5 大预算挑战
  • vue2 集成 - 超图-SuperMap iClient3D for WebGL
  • FPGA设计过程中有关数据之间的并串转化
  • hologres基础知识一文全
  • 阿里云oss迁移到AWS S3
  • RabbitMQ(高级特性):限流
  • LeetCode--570. 至少有5名直接下属的经理
  • Ubuntu20.04下安装Redis环境
  • 什么是用户体验测试? 为什么很重要?
  • Android 图片翻面动画
  • 如何恢复已删除的PDF文件?4个常用方法分享(含操作步骤)!
  • head first python 第一章-新代码更新pypi
  • mysql之备份和恢复
  • 【音视频 | Ogg】libogg库详细介绍以及使用——附带libogg库解析.opus文件的C源码
  • 如何使用群晖NAS的Audio Station结合内网穿透实现远程访问本地曲库
  • 要在CentOS中安装Docker
  • Android Gldie复用只取之前decode过的缓存resource,Kotlin
  • EasyExcel实现动态表头功能
  • Python | 安装、环境配置及包的安装
  • CentOS 7 安装 JDK17(注意版本号要与自己的版本一致)
  • JavaScript 数组操作
  • idea使用lombok编译问题
  • GoLong的学习之路(番外)如何使用依赖注入工具:wire
  • 【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?
  • torch.cumprod实现累乘计算
  • 设计模式之迭代器模式
  • 使用SSH ,让windows和linux互通
  • 常用设计模式——策略模式