配置文件
picgo 需要配置文件来启动。当你未指定配置文件的时候,picgo 将会使用默认配置文件来启动。
默认配置文件
picgo 的默认配置文件为~/.picgo/config.json。其中~为用户目录。不同系统的用户目录不太一样。
linux 和 macOS 均为~/.picgo/config.json。
windows 则为C:\Users\你的用户名\.picgo\config.json。
自动生成
通常来说你只需要配置 Uploader 即可,所以你可以通过 picgo set uploader 来进入交互式命令行,配置成功后会自动生成配置文件,无需复制粘贴!其他更多的命令可以参考 CLI 命令 一章。
注意
同时,填好图床配置之后,请务必通过 picgo use uploader 选择当前要使用的 Uploader。
$ picgo set uploader
? Choose a(n) uploader (Use arrow keys)
smms
❯ tcyun
github
qiniu
imgur
aliyun
upyun
(Move up and down to reveal more choices)手动生成
如果你要手动生成配置文件,需要自己创建对应的目录、JSON 文件以及至少有如下的配置项(因此还是推荐通过命令行自动生成配置文件):
{
"picBed": {
"uploader": "smms", // 代表当前的默认上传图床为 SM.MS,
"smms": {
"token": "" // 从 https://sm.ms/home/apitoken 获取的 token
}
},
"picgoPlugins": {} // 为插件预留
}picBed
作为 picgo 最主要的配置项,picBed 里包括了当前上传图床,以及所有上传图床的配置。
插件开发者注意
如果一个 Uploader 的名字为xxx,那么它的配置信息会放置在picBed.xxx里。这个将有助于 PicGo 的 electron 版本进行配置。
picBed.uploader
- type: string
- default:
smms
表明当前的上传图床是哪个。默认值是smms。
picBed.current
作用与picBed.uploader一致,主要是为了兼容 PicGo 的 electron 版本而留下的配置。未来有可能抛弃。
picBed.smms 1.4.7+
SMMS 图床的相关配置。注册并登录 smms 获取 token。可以查看 PicGo 的 wiki 进行配置。
默认值如下:
{
"token": "" // 注册后获取的 api token
}picBed.qiniu
七牛图床的相关配置。可以查看 PicGo 的 wiki进行配置。
默认值如下:
{
"accessKey": "",
"secretKey": "",
"bucket": "", // 存储空间名
"url": "", // 自定义域名
"area": "z0" | "z1" | "z2" | "na0" | "as0", // 存储区域编号
"options": "", // 网址后缀,比如?imgslim
"path": "" // 自定义存储路径,比如 img/
}picBed.upyun
又拍云的相关配置。可以查看 PicGo 的 wiki进行配置。
默认值如下:
{
"bucket": "", // 存储空间名,及你的服务名
"operator": "", // 操作员
"password": "", // 密码
"options": "", // 针对图片的一些后缀处理参数
"path": "", // 自定义存储路径,比如 img/
"url": "" // 加速域名,注意要加 http://或者 https://
}picBed.tcyun
腾讯云 COS 的相关配置。可以查看 PicGo 的 [wiki](/zh/gui/guide/config#腾讯云 cos) 进行配置。
默认值如下:
{
"secretId": "",
"secretKey": "",
"bucket": "", // 存储桶名,v4 和 v5 版本不一样
"appId": "",
"area": "", // 存储区域,例如 ap-beijing-1
"path": "", // 自定义存储路径,比如 img/
"customUrl": "", // 自定义域名,注意要加 http://或者 https://
"version": "v5" | "v4" // COS 版本,v4 或者 v5
}picBed.github
GitHub 图床的相关配置。可以查看 PicGo 的 [wiki](/zh/gui/guide/config#github 图床)进行配置。
默认值如下:
{
"repo": "", // 仓库名,格式是 username/reponame
"token": "", // github token
"path": "", // 自定义存储路径,比如 img/
"customUrl": "", // 自定义域名,注意要加 http://或者 https://
"branch": "" // 分支名,默认是 main
}picBed.aliyun
阿里云 OSS 的相关配置。可以查看 PicGo 的 [wiki](/zh/gui/guide/config#阿里云 oss) 进行配置。
默认值如下:
{
"accessKeyId": "",
"accessKeySecret": "",
"bucket": "", // 存储空间名
"area": "", // 存储区域代号
"path": "", // 自定义存储路径
"customUrl": "", // 自定义域名,注意要加 http://或者 https://
"options": "" // 针对图片的一些后缀处理参数 PicGo 2.2.0+ PicGo-Core 1.4.0+
}picBed.imgur
Imgur 的相关配置。可以查看 PicGo 的 [wiki](/zh/gui/guide/config#imgur 图床)进行配置。
默认值如下:
{
"clientId": "", // imgur 的 clientId
"proxy": "" // 代理地址,仅支持 http 代理
}picBed.proxy
自定义代理配置,picgo 内部使用 request 进行图片上传等网络请求,picBed.proxy 将会被用作 request 的 proxy 配置,目前只支持 HTTP 代理。 默认为空表示不设置代理。
示例:
{
"proxy": "http://127.0.0.1:1081",
}uploader 1.8.0+
PicGo 支持为同一种 uploader 保存多份“命名配置”。
数据的唯一来源(SSOT)存放在 uploader.<type>:
uploader.<type>.configList: 配置列表数组。uploader.<type>.defaultId: 当前启用配置的_id。
configList 中每一项都会包含一些元信息字段:
_id(UUID v4)_configName(同一 uploader 类型下唯一;比较时大小写不敏感)_createdAt/_updatedAt(时间戳)
为了兼容插件生态,picBed.<type> 会作为当前启用配置的只读镜像,切换配置时会被覆盖更新。
迁移说明
如果你以前是通过 picBed.<type> 配置 uploader,PicGo 会在启动时自动迁移到新结构。
示例:
{
"uploader": {
"github": {
"defaultId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"configList": [
{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"_configName": "Work",
"_createdAt": 1700000000000,
"_updatedAt": 1700000000000,
"repo": "user/repo",
"token": "******"
}
]
}
}
}管理/切换配置请参考 CLI 命令(picgo use uploader ...、picgo uploader ...),或使用 Node.js API(ctx.uploaderConfig)。
picgoPlugins
这个配置项将会将所有插件名放置进去。主要用于判断插件是否被启用或者禁用。 picgo 自动生成,不需要配置!
示例:
{
"picgo-plugin-xxx": true, // 该插件被启用
"picgo-plugin-yyy": false // 该插件被禁用
}settings
一些与具体 uploader/transformer/plugin 无关的通用设置。
settings.urlRewrite.rules 1.8.1+
可选的 URL 重写规则。配置后,PicGo 会在 Uploader 执行结束之后、afterUploadPlugins 执行之前 对上传结果中的 imgUrl 做 URL rewrite。
- type: Array<Rule>
- default: 未配置(不执行 rewrite;不会输出警告)
每条规则支持:
match(string, required): JavaScriptRegExp的源字符串(不需要写两侧的/)。replace(string, required): 替换字符串(支持$1、$2... 分组引用)。enable(boolean, optional): 默认true;只有显式设置为false才会禁用该规则。global(boolean, optional): 对应正则的gflag;默认false。ignoreCase(boolean, optional): 对应正则的iflag;默认false。
行为说明:
- 规则按数组顺序依次匹配;对每张图片只应用第一条命中的启用规则(First Match Wins)。
- 如果 rewrite 导致
imgUrl发生变化,会把原始 URL 保存到originImgUrl(只会设置一次,不会被覆盖)。 match无法编译成正则时会输出 error 并跳过该规则,上传流程不会失败。- rewrite 结果为空字符串时会输出 warning,但仍会继续。
对插件开发者 / Node.js 调用方的影响
afterUploadPlugins拿到的ctx.output里imgUrl已经是 重写后的 值;如需上传器产出的原始 URL,请读取originImgUrl。- Node.js API
picgo.upload()返回的IImgInfo[]里imgUrl也是 重写后的 值;如需重写前的值,请读取originImgUrl。 - 只有当 PicGo 实际发生 URL 重写时才会设置
originImgUrl;否则它会保持为undefined。
示例
示例(简单前缀替换 / 切换到 CDN):
把:
https://example.com/images/2026/1.png- 重写为
https://cdn.example.com/blog-images/2026/1.png
{
"settings": {
"urlRewrite": {
"rules": [
{
"match": "https://example.com/images/",
"replace": "https://cdn.example.com/blog-images/"
}
]
}
}
}示例(忽略大小写:统一扩展名):
把:
https://cdn.example.com/blog-images/2026/1.PNG- 重写为
https://cdn.example.com/blog-images/2026/1.png
{
"settings": {
"urlRewrite": {
"rules": [
{
"match": "PNG",
"replace": "png",
"ignoreCase": true
}
]
}
}
}示例(global:替换 URL 中所有下划线):
把:
https://cdn.example.com/blog_images/2026/hello_world.png- 重写为
https://cdn.example.com/blog-images/2026/hello-world.png
{
"settings": {
"urlRewrite": {
"rules": [
{
"match": "_",
"replace": "-",
"global": true
}
]
}
}
}正则与转义
match 是 JavaScript 正则表达式的源字符串。进阶用法中你可能需要在 JSON 字符串里转义反斜杠,例如要匹配 . 需要写成 \\.。
进阶:分组引用($1、$2...)
把:
https://example.com/images/2026/1.png- 重写为
https://cdn.example.com/blog-images/2026/1.png
如果 match 里用括号捕获了 URL 的某一段,就可以在 replace 里用 $1、$2... 引用(例如 $1 表示第 1 个分组,$2 表示第 2 个分组)。 在下面这个例子里,$1 会捕获到 images,$2 会捕获剩余路径(2026/1.png):
{
"settings": {
"urlRewrite": {
"rules": [
{
"match": "^https://example.com/(images)/(.*)$",
"replace": "https://cdn.example.com/blog-$1/$2"
}
]
}
}
}进阶示例(把 GitHub raw URL 重写为 jsDelivr):
把:
https://raw.githubusercontent.com/user/repo/main/path/to/1.png- 重写为
https://cdn.jsdelivr.net/gh/user/repo@main/path/to/1.png
{
"settings": {
"urlRewrite": {
"rules": [
{
"match": "^https://raw.githubusercontent.com/([^/]+)/([^/]+)/([^/]+)/(.*)$",
"replace": "https://cdn.jsdelivr.net/gh/$1/$2@$3/$4"
}
]
}
}
}transformer
这个配置项主要用于存放第三方插件里的 Transformer 的相关配置。
插件开发者注意
如果一个 Transformer 的名字为xxx,那么它的配置信息会放置在transformer.xxx里。这将有助于 PicGo 的 electron 版本进行配置。
默认值:{}
picgo-plugin-*
如果你为 picgo 开发了一个插件,如果这个插件本身需要一些配置项,那么这个插件对应的配置应该直接放置在配置文件下的同名配置里:
示例:
"picgo-plugin-xxx": {
"config1": "",
"config2": ""
}