跳转到内容

创建第一个插件

从 Eidos 插件模板开始。 它包含可运行的页面、打开页面的命令、主题样式、测试和 GitHub Actions 工作流。 本教程会带你打开计数器、修改行为,再生成可安装的插件包。

需要 Node.js 22.12 及以上、npm、Git,以及支持插件 API 3.0.0 或更高版本 的 Eidos Lite。准备一个测试 Space。模板通过锁文件固定已发布的 SDK 和工具, 不需要克隆 Eidos 源码或另配开发服务器。

打开模板仓库,点击 Use this template → Create a new repository,将新仓库命名为 my-eidos-plugin。随后克隆它;将 YOUR-NAME 换成自己的 GitHub 用户或组织名:

终端窗口
git clone https://github.com/YOUR-NAME/my-eidos-plugin.git
cd my-eidos-plugin
npm ci
plugin.json 插件身份与贡献声明
src/main.ts 页面界面
src/extension.ts 打开页面的命令
src/style.css 宿主主题样式
test/plugin.test.ts 交互和清理测试
.github/workflows/plugin.yml 检查、打包和发布工作流

在现有 plugin.json 中修改以下字段,保留其余声明:

字段 示例
id yourname.my-counter
name 我的计数器
description 工作区中的简单计数器
views[0].title 我的计数器
actions[0].title 我的计数器:打开

ID 使用小写、以点分隔的命名空间。使用自己的前缀,分发后保持 ID 稳定。 保留贡献 ID main 和 open,命令与挂载位置会引用它们。

将 package.json 的 name 改为自己的项目名,运行 npm install --package-lock-only 更新锁文件。两个文件的 version 必须相同, 本次练习都保留为 0.1.0。requires.pluginApi 表示所需的最低 API; 只提高数字并不会获得能力。

终端窗口
npm run typecheck
npm test
npm run check

三个命令分别检查 TypeScript、测试页面与命令的生命周期,以及验证声明和 Lite 兼容性。检查通过不代表真实宿主界面已经验证;接下来打开它:

  1. 在 Eidos Lite 中打开测试 Space,进入插件管理器。
  2. 选择 Load development source…,打开项目的 plugin.json。
  3. 查看声明,并为当前 Space 启用插件。
  4. 从导航打开 我的计数器,或按 Cmd/Ctrl+K 执行 我的计数器:打开。

页面会显示 Add one 按钮和数字 0。点击两次,数字应变成 2。 此模板未申请文件、网络、存储或后台权限;独立页面和命令面向 Lite, CLI Serve 不支持这两个入口。

打开 src/main.ts。mount(ctx, root) 在宿主提供的容器中创建界面。 将标题和按钮文字改为自己的内容,再将 increment 改为每次加五:

const increment = () => {
value += 5
count.textContent = String(value)
}

保存后,Lite 会重新编译和加载。计数器从 0 重新开始,点击一次应显示 5。 保留这个改动时,也要更新测试中的预期计数,再运行检查。

计数只存在于当前页面内存,关闭或重载页面后重置。ctx.subscriptions 在作用域关闭时清理监听器。src/extension.ts 注册 open 命令,并在命令调用 上下文中通过 ctx.capabilities.ui.navigate("main", "/") 打开页面。

编译失败时,Lite 会保留上一次可用界面。先根据错误修复源码,不能仅凭界面仍可见 就认为新代码已加载。样式通过 src/style.css 中的 --eidos-* 变量适配宿主主题。

检查通过后运行:

终端窗口
npm run pack:plugin

使用示例 ID 时,会生成:

dist/yourname.my-counter-0.1.0.eidos-plugin
dist/yourname.my-counter-0.1.0.eidos-plugin.sha256

通过插件管理器安装此包,查看声明、启用并重新打开页面。开发加载是临时的; 安装插件包后,重启仍能使用该修订。

仓库的 Actions 工作流也会执行检查,并提供 plugin-package 构建产物。 推送匹配版本的 tag 后,只有检查通过才会创建 GitHub Release。 正式发布或提交市场目录前,请阅读开发与分发。