mirror of
https://github.com/jackwener/OpenCLI.git
synced 2026-09-14 18:25:42 +08:00
2.5 KiB
2.5 KiB
插件
OpenCLI 支持社区贡献的 plugins。你可以从 GitHub 安装第三方 adapters,它们会和内置 commands 一起在启动时自动发现。
安装插件
# 安装插件
opencli plugin install github:ByteYue/opencli-plugin-github-trending
# 列出已安装插件
opencli plugin list
# 使用插件(本质上就是普通 command)
opencli github-trending today
# 卸载插件
opencli plugin uninstall github-trending
插件目录结构
Plugins 存放在 ~/.opencli/plugins/<name>/。每个子目录都会在启动时扫描 .yaml、.ts、.js 命令文件,格式与内置 adapters 相同。
安装来源
opencli plugin install github:user/repo
opencli plugin install https://github.com/user/repo
如果仓库名带 opencli-plugin- 前缀,本地目录会自动去掉这个前缀。例如 opencli-plugin-hot-digest 会变成 hot-digest。
YAML plugin 示例
my-plugin/
hot.yaml
site: my-plugin
name: hot
description: Example plugin command
strategy: public
browser: false
pipeline:
- evaluate: |
() => [{ title: 'hello', url: 'https://example.com' }]
columns: [title, url]
TypeScript plugin 示例
my-plugin/
index.ts
package.json
{
"name": "opencli-plugin-my-plugin",
"type": "module"
}
import { cli, Strategy } from '@jackwener/opencli/registry';
cli({
site: 'my-plugin',
name: 'hot',
description: 'Example TS plugin command',
strategy: Strategy.PUBLIC,
browser: false,
columns: ['title', 'url'],
func: async () => [{ title: 'hello', url: 'https://example.com' }],
});
运行 opencli plugin install 时,TS plugins 会自动完成基础设置:
- 安装 plugin 自身依赖
- 补齐 TypeScript 运行环境
- 将宿主
@jackwener/opencli链接到 plugin 的node_modules/,保证@jackwener/opencli/registry指向当前宿主版本
示例 plugins
opencli-plugin-github-trending:GitHub Trending 仓库opencli-plugin-hot-digest:多平台热点聚合(zhihu、weibo、bilibili、v2ex、stackoverflow、reddit、linux-do)opencli-plugin-juejin:稀土掘金热榜、分类和文章流
排查问题
TS plugin import 报错
如果看到 Cannot find module '@jackwener/opencli/registry',通常是宿主 symlink 失效。重新安装 plugin 即可:
opencli plugin uninstall my-plugin
opencli plugin install github:user/opencli-plugin-my-plugin
安装或卸载 plugin 后,建议重新打开一个终端,确保启动时重新发现命令。