Skip to content

CLI命令

picgo 支持命令行模式直接使用。在你全局安装了picgo之后,你可以通过picgo -h来查看所有命令:

bash
$ picgo -h

  Usage: picgo [options] [command]

  Options:

    -v, --version                 output the version number
    -d, --debug                   debug mode
    -s, --silent                  silent mode
    -c, --config <path>           set config path
    -h, --help                    output usage information

  Commands:

    install|add [options] <plugins...>   install picgo plugin
    uninstall|rm <plugins...>            uninstall picgo plugin
    update [options] <plugins...>        update picgo plugin
    set <module> [name] [configName]     configure config of picgo modules
    config [command]                     manage picgo config
    upload|u [input...]                  upload, go go go
    use [module] [name] [configName]     use modules of picgo
    uploader [command]                   manage uploader configurations
    login [token]                        login to picgo cloud (cloud.picgo.app)
    logout                               logout from picgo cloud (cloud.picgo.app)
    server [options]                     run PicGo as a standalone server
    i18n [lang]                          change picgo language
    help [command]                       display help for command

WARNING

从 PicGo-Core v1.7.0 开始,PicGo 不再内置原来的 picgo init 命令。 请使用独立的 picgo-init 命令(见下方 picgo-init 小节)。

提示

其中,命令选项如果是用<>包围起来的为必须输入项,如果是用[]包围起来的则为可选输入项。 有些命令支持简写,比如picgo upload可以写为picgo u

picgo 命令行的实现来自于commander.jsinquirer.js。下面将介绍各个命令以及如何配置。

use

该命令用于选择picgo模块。模块主要有三种:1. transformer 2. uploader 3. plugins

bash
$ picgo use -h

  Usage: use [module] [name] [configName]

  use a module (uploader/transformer/plugin) of picgo

picgo内置了如下的内容:

  • transformer:
    • path
    • base64
  • uploader:
    • smms -> SM.MS (S.EE)
    • tcyun -> 腾讯云COS
    • upyun -> 又拍云
    • aliyun -> 阿里云OSS
    • qiniu -> 七牛云
    • imgur -> Imgur
    • github -> GitHub

提示

通常来说,在命令行模式下你只需要选择path作为picgo的transformer即可。

具体使用可以通过picgo use 或者 picgo use uploader|transformer|plugins来选择你需要的模块内容,这将会进入一个交互式命令行:

bash
$ picgo use
? Use an uploader (Use arrow keys)
  smms
 tcyun
  weibo
  github
  qiniu
  imgur
  aliyun
(Move up and down to reveal more choices)

从 PicGo-Core v1.8.0 开始,uploader 支持多份命名配置。如果某个 uploader 存在多份配置,交互流程会让你选择要启用的那一份;你也可以直接在命令里指定:

bash
picgo use uploader <type> <configName>

其中 configName 的匹配大小写不敏感。

选择完后,picgo将会使用你选择的模块进行上传。在上传前有些模块可能需要配置。比如一些图床的key、token等。这个时候你就需要下面会提到的命令set来配置你选择的模块内容。

uploader 1.8.0+

用于管理 uploader 的多份命名配置。

  • picgo uploader:进入交互式管理(list/rename/copy/delete)
  • picgo uploader list [type]:列出配置(会标记当前 uploader 与默认配置)
  • picgo uploader rename <type> <oldName> <newName>
  • picgo uploader copy <type> <configName> <newConfigName>:复制配置(不会切换当前 uploader)
  • picgo uploader rm <type> <configName>

配置名匹配大小写不敏感。

示例:

bash
picgo uploader list
picgo uploader list github
picgo uploader rename github Work Personal
picgo uploader copy github Work Staging
picgo uploader rm github Staging

set

该命令用于配置某些模块的一些配置项。模块主要有三种:1. transformer 2. uploader 3. plugins

bash
$ picgo set -h

  Usage: set [options] <module> [name] [configName]

  configure config of picgo modules (uploader/transformer/plugin)

  Options:

    -h, --help  output usage information

提示

通常来说,picgo默认只需要配置Uploader即可。所以你可以直接通过picgo set uploader或者picgo set uploader <type> [configName]等命令直接进入交互式命令行。

从 PicGo-Core v1.8.0 开始,set uploader 支持 uploader 多配置:你可以选择一个已有的配置(按名称),也可以新建一份配置;保存后会自动将该配置设置为该 uploader 的当前启用配置。

picgo内置的图床的配置项细节可以参考PicGo的配置wiki

如果某个uploader或者transformer或者plugin没有可配置项,picgo也会提示配置成功,不需要担心。

bash
$ picgo set transformer path
[PicGo SUCCESS]: Configure config successfully!

login 2.0+

登录 PicGo Cloud(https://cloud.picgo.app),并把 token 保存到 settings.picgoCloud.token

bash
picgo login [token]
  • 传入 token:通过 Cloud API 验证,成功后保存。
  • 不传 token:先尝试已保存的 token;无效则开启浏览器登录流程。
  • 浏览器登录会启动本地回调服务并打开 https://cloud.picgo.app 的登录 URL;若无法自动打开,会打印 URL 供手动打开。

logout 2.0+

退出 PicGo Cloud(https://cloud.picgo.app),并清除本地 token。

bash
picgo logout
  • 清除本地保存的 settings.picgoCloud.token

config 2.0+

配置相关操作,目前包含 config sync

config sync

bash
picgo config sync [--encrypt <auto|sse|e2ee>]
  • 使用三路合并(snapshot + local + remote)同步配置。
  • 首次同步或远端缺失时,使用本地配置回填云端并生成 snapshot。
  • 发生冲突时会打印 diff tree 并提示 Use Local / Use Remote / Abort;在你选择前不会覆盖本地配置。
  • settings.picgoCloud.tokensettings.picgoCloud.encryptionMethod 仅保留本地值,不会被云端覆盖。
  • 需要有效的 Cloud token,先运行 picgo login(cloud.picgo.app)。

加密方式选项

  • --encrypt <method>:校验 <method> 必须为 autossee2ee 之一,并在同步前写入 settings.picgoCloud.encryptionMethod = <method>
  • 三种模式说明:auto 会跟随云端上一次保存的加密方式,sse 为服务端加密,e2ee 为端到端加密(需要 PIN)。
  • <method> 非法或缺失,PicGo 会报错:Invalid configuration: settings.picgoCloud.encryptionMethod must be one of 'auto', 'sse', 'e2ee'. Found: "<value>"
  • 不带参数时,遵循本地偏好(settings.picgoCloud.encryptionMethod);缺失时默认 auto,但不会写回配置。
  • 使用 E2EE 时会要求输入 PIN(需二次确认,最多重试 3 次);解密时 PIN 错误会最多再重试 3 次,超过后失败。
  • 详细说明可参考 PicGo Blog

server 2.0+

以本地 HTTP 服务方式运行 PicGo。

bash
picgo server [options]

参数:

  • -p, --port <n>:服务端口(默认 36677)。
  • -h, --host <s>:服务 host(默认 127.0.0.1)。
  • -i, --ignore-existing-external-server:忽略同地址的 PicGo 实例。
  • --secret <s>:开启服务鉴权的 shared secret。

当端口被占用时,PicGo 会检测是否已有 PicGo 实例;若存在则复用端口(除非指定 --ignore-existing-external-server),否则端口自增重试。

内置接口

  • POST /heartbeat{ success: true, result: "alive" }
  • POST /upload
    • 空 body、{}{ "list": [] }:上传剪贴板。
    • { "list": ["path1", "path2"] }:上传指定文件路径。
    • 非法 JSON 返回 HTTP 400
    • multipart/form-data 且字段为 files:上传文件并清理 baseDir 下的临时文件。

鉴权(可选)

当解析到非空 secret 时启用鉴权(优先级:--secretPICGO_SERVER_SECRETsettings.server.secret)。secret 会先 trim;仅空白将禁用鉴权。

  • 保护路由:POST /upload 与所有插件注册路由(含 mount 子路由)。

  • 凭证优先级:Authorization: Bearer <token>(大小写不敏感)→ X-PicGo-Secret?secret=<token>

    • 只要存在 Authorization,即使错误也不会回退到低优先级来源。
    • ?secret= 可用但不推荐;服务进程只会警告一次。
  • 未授权返回 HTTP 401{ success: false, message: "Unauthorized" }

  • 启动时会记录是否启用了鉴权;未授权请求会记录客户端 IP(优先 X-Forwarded-For)。

示例:

bash
picgo server --secret mytoken
curl -H "Authorization: Bearer mytoken" -H "Content-Type: application/json" -d '{"list":[]}' http://127.0.0.1:36677/upload

upload|u

该命令用于上传图片到图床。通常是上传磁盘上已有的图片,可以同时上传多张。上传多张图片的时候用空格隔开。也可以上传剪贴板里的第一张图片。

提示

请确保你上传前使用了use以及set命令配置好了需要上传的图床。

bash
$ picgo u ./Test-测试.jpg ./test-qiniu.png
[PicGo INFO]: Before transform
[PicGo INFO]: Transforming...
[PicGo INFO]: Before upload
[PicGo INFO]: Uploading...
[PicGo SUCCESS]:
https://i.loli.net/2018/09/06/5b9134645b9df.jpg
https://i.loli.net/2018/09/06/5b9134651af34.png

如果不显式指定上传的文件,picgo将会上传剪贴板里的第一张图片(由于跨平台限制,上传时将会转为png格式)。通常这在截图后上传非常有用。

bash
$ picgo u
[PicGo INFO]: Before transform
[PicGo INFO]: Transforming...
[PicGo INFO]: Before upload
[PicGo INFO]: Uploading...
[PicGo SUCCESS]:
https://i.loli.net/2018/09/06/5b9134645b9df.jpg

install|add

该命令用于安装npm上的picgo的插件。picgo的插件名都是以picgo-plugin-开头的。在安装、卸载或者更新的时候,你只需要输入name值而不需要输入picgo-plugin-的前缀。可以一次性安装多个插件,用空格隔开即可。

提示

PicGo会把插件安装在配置文件所在的目录下。默认配置文件在~/.picgo/下,所以插件会安装在~/.picgo/node_modules/下。

你可以通过npm的官方网站查找目前所有的picgo的插件。picgo的插件命名规则为picgo-plugin-[name]。然后再通过:

bash
picgo install [name]

来安装插件。你安装了之后,可以通过picgo ch plugins来选择开启或者禁用这个插件。

uninstall|rm

该命令用于删除你所安装的picgo插件。如果不存在将会报错。

bash
picgo uninstall [name]

update

该命令用于更新已经安装的picgo插件。如果不存在将会报错。

bash
picgo update [name]

i18n

用于切换 picgo 的语言。目前支持的语言有:

  • zh-CN (默认)
  • zh-TW
  • en

示例:

bash
picgo i18n en

-v, --version

输入picgo -v或者picgo --version将输出当前picgo的版本信息。

-d, --debug

在输入任何有效命令的情况下加入-d或者--debug会进入debug模式。将会输出更加详细的报错信息,指出错误的具体位置。

-c, --config

在输入任何有效命令的情况下加入-c <path>可以指定picgo的配置文件所在处。默认的配置文件是~/.picgo/config.json

提示

picgo将会读取配置文件所在目录下node_modules的插件。

-s, --silent

在输入任何有效命令的情况下加入-s或者--silent将会进入静默模式,除了报错信息之外,picgo在命令行里将不会输出任何信息。

picgo-init

该命令用于下载和生成 picgo 的插件开发模板

从 PicGo-Core v1.7.0 开始,该能力由独立的 picgo-init 命令提供。 你可以在 PicGo/PicGo-Init 找到安装与使用说明。

bash
$ picgo-init -h

Usage: picgo-init <template> [project]

create picgo plugin's development templates

Options:
  --offline   use cached template
  --debug     debug mode
  -h, --help  display help for command

Examples:

  # create a new project with an official template
  $ picgo-init plugin my-project

  # create a new project straight from a github template
  $ picgo-init username/repo my-project

类似于vue-cliinit命令,picgo 也提供了官方模板。你在执行 picgo-init 时,模板名只需要写 plugin,内部会自动判断如果非 username/repo 形式的话,自动加上 PicGo/picgo-template- 的前缀。

这个命令用于方便用户快速开发一个picgo插件。关于插件开发,可以查看插件开发一章。