CLI命令
picgo 支持命令行模式直接使用。在你全局安装了picgo之后,你可以通过picgo -h来查看所有命令:
$ 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 commandWARNING
从 PicGo-Core v1.7.0 开始,PicGo 不再内置原来的 picgo init 命令。 请使用独立的 picgo-init 命令(见下方 picgo-init 小节)。
提示
其中,命令选项如果是用<>包围起来的为必须输入项,如果是用[]包围起来的则为可选输入项。 有些命令支持简写,比如picgo upload可以写为picgo u。
picgo 命令行的实现来自于commander.js与inquirer.js。下面将介绍各个命令以及如何配置。
use
该命令用于选择picgo模块。模块主要有三种:1. transformer 2. uploader 3. plugins
$ picgo use -h
Usage: use [module] [name] [configName]
use a module (uploader/transformer/plugin) of picgopicgo内置了如下的内容:
- 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来选择你需要的模块内容,这将会进入一个交互式命令行:
$ 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 存在多份配置,交互流程会让你选择要启用的那一份;你也可以直接在命令里指定:
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>
配置名匹配大小写不敏感。
示例:
picgo uploader list
picgo uploader list github
picgo uploader rename github Work Personal
picgo uploader copy github Work Staging
picgo uploader rm github Stagingset
该命令用于配置某些模块的一些配置项。模块主要有三种:1. transformer 2. uploader 3. plugins
$ 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也会提示配置成功,不需要担心。
$ picgo set transformer path
[PicGo SUCCESS]: Configure config successfully!login 2.0+
登录 PicGo Cloud(https://cloud.picgo.app),并把 token 保存到 settings.picgoCloud.token。
picgo login [token]- 传入
token:通过 Cloud API 验证,成功后保存。 - 不传
token:先尝试已保存的 token;无效则开启浏览器登录流程。 - 浏览器登录会启动本地回调服务并打开 https://cloud.picgo.app 的登录 URL;若无法自动打开,会打印 URL 供手动打开。
logout 2.0+
退出 PicGo Cloud(https://cloud.picgo.app),并清除本地 token。
picgo logout- 清除本地保存的
settings.picgoCloud.token。
config 2.0+
配置相关操作,目前包含 config sync。
config sync
picgo config sync [--encrypt <auto|sse|e2ee>]- 使用三路合并(snapshot + local + remote)同步配置。
- 首次同步或远端缺失时,使用本地配置回填云端并生成 snapshot。
- 发生冲突时会打印 diff tree 并提示
Use Local/Use Remote/Abort;在你选择前不会覆盖本地配置。 settings.picgoCloud.token与settings.picgoCloud.encryptionMethod仅保留本地值,不会被云端覆盖。- 需要有效的 Cloud token,先运行
picgo login(cloud.picgo.app)。
加密方式选项
--encrypt <method>:校验<method>必须为auto、sse、e2ee之一,并在同步前写入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。
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下的临时文件。
- 空 body、
鉴权(可选)
当解析到非空 secret 时启用鉴权(优先级:--secret → PICGO_SERVER_SECRET → settings.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)。
示例:
picgo server --secret mytoken
curl -H "Authorization: Bearer mytoken" -H "Content-Type: application/json" -d '{"list":[]}' http://127.0.0.1:36677/uploadupload|u
该命令用于上传图片到图床。通常是上传磁盘上已有的图片,可以同时上传多张。上传多张图片的时候用空格隔开。也可以上传剪贴板里的第一张图片。
提示
请确保你上传前使用了use以及set命令配置好了需要上传的图床。
$ 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格式)。通常这在截图后上传非常有用。
$ 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.jpginstall|add
该命令用于安装npm上的picgo的插件。picgo的插件名都是以
picgo-plugin-开头的。在安装、卸载或者更新的时候,你只需要输入name值而不需要输入picgo-plugin-的前缀。可以一次性安装多个插件,用空格隔开即可。
提示
PicGo会把插件安装在配置文件所在的目录下。默认配置文件在~/.picgo/下,所以插件会安装在~/.picgo/node_modules/下。
你可以通过npm的官方网站查找目前所有的picgo的插件。picgo的插件命名规则为picgo-plugin-[name]。然后再通过:
picgo install [name]来安装插件。你安装了之后,可以通过picgo ch plugins来选择开启或者禁用这个插件。
uninstall|rm
该命令用于删除你所安装的picgo插件。如果不存在将会报错。
picgo uninstall [name]update
该命令用于更新已经安装的picgo插件。如果不存在将会报错。
picgo update [name]i18n
用于切换 picgo 的语言。目前支持的语言有:
- zh-CN (默认)
- zh-TW
- en
示例:
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 找到安装与使用说明。
$ 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-cli的init命令,picgo 也提供了官方模板。你在执行 picgo-init 时,模板名只需要写 plugin,内部会自动判断如果非 username/repo 形式的话,自动加上 PicGo/picgo-template- 的前缀。
这个命令用于方便用户快速开发一个picgo插件。关于插件开发,可以查看插件开发一章。
