菜单

插件开发

相关源文件

本页面提供了开发 Tabby 终端插件的全面指南。插件允许您通过新的终端连接类型、UI 组件、主题、命令等来扩展 Tabby 的功能。本文档涵盖了插件的架构、开发流程和集成点。

有关安装现有插件的信息,请参阅 设置开发环境 中的插件管理器部分。

插件架构概述

Tabby 采用模块化的插件架构,每个插件都是一个遵循特定约定的 npm 包。应用程序在启动时动态发现并加载插件,将它们集成到核心功能中。

插件系统架构

来源:app/src/plugins.ts189-226 app/src/plugins.ts228-262 tabby-core/src/index.ts61-84

插件加载顺序

来源:app/src/entry.ts34-55 app/src/plugins.ts189-226 app/src/plugins.ts228-262

插件结构

必需文件

至少,Tabby 插件需要这些文件

文件目的
package.json定义插件元数据、依赖项和构建脚本
webpack.config.js插件构建的配置
src/index.ts主入口点,导出插件的 Angular 模块
src/[components, services, etc.]插件功能实现

Package.json 配置

您的插件的 package.json 需要特定配置才能被 Tabby 识别

keywords 字段尤为重要——它必须包含 tabby-plugin(用于社区插件)或 tabby-builtin-plugin(用于官方插件)。

来源:tabby-terminal/package.json1-53 tabby-ssh/package.json1-47 tabby-core/package.json1-41

创建插件

基本模块结构

每个插件必须将其作为主入口点的 Angular 模块导出。这是一个简化的示例

插件集成类图

来源:tabby-core/src/index.ts40 tabby-core/src/index.ts61-84 app/src/plugins.ts155-187

扩展点

Tabby 提供了几个插件的扩展点。最常见的有

标签类型

扩展 BaseTabComponent 以在 Tabby 界面中创建新的标签类型。

终端连接

实现终端连接服务和组件,以添加对新协议(如 SSH、Telnet 等)的支持。

配置

实现 ConfigProvider 以向 Tabby 的设置添加新配置选项。

来源:tabby-core/src/index.ts64

快捷键

实现 HotkeyProvider 以添加自定义键盘快捷键

来源:tabby-core/src/index.ts62 tabby-core/src/hotkeys.ts8-284

上下文菜单

实现 TabContextMenuItemProvider 以将项目添加到标签上下文菜单

来源:tabby-core/src/index.ts66-68 tabby-core/src/tabContextMenu.ts19-298

连接配置文件

实现 ProfileProvider 以添加新的连接配置文件类型

来源:tabby-core/src/index.ts73

构建和测试您的插件

开发环境设置

  1. 克隆 Tabby 仓库

    git clone https://github.com/Eugeny/tabby.git
    cd tabby
    
  2. 创建您的插件目录

    mkdir -p tabby-your-plugin
    
  3. 按照上述说明设置插件的 package.json 和其他文件。

构建和测试

  1. 构建您的插件

    cd tabby-your-plugin
    npm run build
    
  2. 链接您的插件进行测试

    cd dist
    npm link
    cd ../../app
    npm link tabby-your-plugin
    
  3. 以开发模式运行 Tabby

    npm run start
    

插件发现过程

Tabby 使用以下流程来发现插件

来源:app/src/plugins.ts95-127 app/src/plugins.ts130-153 app/src/plugins.ts189-226

示例:创建一个简单的插件

这是一个创建基本插件的简化工作流程

  1. 设置插件结构:

    • 创建包含必需字段的 package.json
    • 使用您的模块创建 src/index.ts
    • 添加 webpack.config.js
  2. 实现插件功能:

    • 创建组件、服务、提供者
    • 通过您的模块导出它们
  3. 注册扩展:

    • 为扩展点添加提供者
    • 实现所需的接口
  4. 构建和测试:

    • 构建您的插件
    • 将其链接到 Tabby 进行测试

最佳实践

  1. 使用依赖注入 - Tabby 大量使用 Angular 的依赖注入,请在您的插件中遵循此模式。

  2. 考虑平台差异 - Tabby 运行在多个平台(Windows、macOS、Linux)上,请确保您的插件在它们之间都能正常工作。

  3. 遵循现有模式 - 研究内置插件以理解应用程序的设计模式。

  4. 保持轻量级 - 尽量减少外部依赖,以保持插件的高效性。

  5. 提供清晰的文档 - 记录插件的功能和用法。

遵循这些准则,您可以创建增强 Tabby 功能的插件,同时保持与核心应用程序的兼容性。

来源:app/src/plugins.ts1-263 tabby-core/src/index.ts1-267 tabby-terminal/package.json1-53 tabby-ssh/package.json1-47