在 OpenSumi 中,咱们提供了一个弱小的插件生态系统,在兼容 VS Code 插件 API 的同时,咱们也有着本人的 OpenSumi API 用于进一步拓展 IDE 界面及能力。

▲插件能力实现结构图

开发 VS Code 插件

在插件开发中,你能够遵循 VS Code 的开发模式,在 VS Code 内实现你的插件开发后,将实现的插件产物引入到基于 OpenSumi 搭建的 IDE 中应用,具体可参考 VS Code 插件文档 Extension Guides。

上面是一些罕用的示例及文档:

  • eclipse-theia/vscode-builtin-extensions —— 基于 VS Code 版本打包其内置插件的工程项目
  • microsoft/vscode-extension-samples —— VS Code 官网的插件 API 示例仓库
  • Extension Guides —— VS Code 插件开发向导文档
  • Your First Extension —— 疾速开始插件开发
  • Web Extensions —— 在 OpenSumi 中也反对了这类插件,在纯前端环境有着非常重要的作用

开发 OpenSumi 插件

OpenSumi 中存在着一部分仅能运行在基于 OpenSumi 开发的 IDE 之中,提供的能力包含但不限于:

  • 通过 React 技术栈进行视图的拓展定制
  • Toolbar 定制
  • Electron Webview 治理
  • 布局能力
  • 全视图的自定义渲染

一个残缺的 OpenSumi 插件目录构造如下:

.├── .gitignore          # git 疏忽目录├── README.md           # 插件阐明├── src    ├── extend        ├── browser     # 插件 Browser 端入口, 提供 UI 定制能力        ├── node        # 插件 Node 端入口,提供本地环境运行能力        ├── worker      # 插件 Worker 端入口,提供 WebWorker 环境运行能力│   └── extension.ts    # 插件源码 (VS Code 插件入口)├── package.json        # Extension manifest├── tsconfig.json

目录阐明

src/extensions.ts 为 VS Code 插件入口,对于 VS Code 插件开发请参阅 Extension Guides。

src/extend 目录下为 OpenSumi 自有插件体系,蕴含 Browser/Node/Worker 端入口。

入口阐明

VS Code 插件在 OpenSumi 运行时会放弃与 VS Code 特定版本统一的行为,例如以后 2.23.0 版本兼容 VS Code 的插件 API 版本为 1.68.0。

Browser 端反对通过 React 组件的形式在界面裸露的插槽中定制 UI ,如果你的插件须要在界面注册 UI 组件,能够将其编写在 Browser 端。

Node 端反对纯 Node 环境运行时,在 Node 端插件领有与 VS Code 插件统一的 API,同时还能够调用 OpenSumi 自有的插件 API,如果你的插件须要调用原生 Node.js 的 API 或运行一些本地工作,能够将其编写在 Node 端。

Worker 端领有 WebWorker 环境运行时,如果你的插件蕴含一些计算量较大的工作,同时不须要本地能力,能够将其编写在 Worker 端。

不论是 VS Code 插件还是 Browser/Node/Worker 三端都是可选的,也就是说如果你只须要原生 VS Code 插件能力,则能够疏忽 extend 目录。同样如果你只须要 OpenSumi 插件三端之一的能力,也能够疏忽其余,仅须要批改大量的配置。

开始开发

OpenSumi 反对 Web/Electron 两种形式集成,插件零碎及其能力在两个平台下具备统一的体现。

开发插件时,你能够应用 @opensumi/cli 疾速在本地启动插件开发环境。

$ npm install @opensumi/cli -g

残缺内容请参考 疾速开始 文档,应用 OpenSumi CLI 疾速在本地搭建插件开发环境。

文档地址:https://opensumi.com/zh/docs/extension/quick-start

插件示例

除了下面提到的 VS Code Extension Samples,OpenSumi 也有本人的插件示例仓库 OpenSumi Extension Samples,蕴含了一些常见的插件示例代码。

插件市场

以后 OpenSumi 反对两种插件市场,如上面所示:

  • OpenTRS —— 蚂蚁团体凋谢的公共插件市场服务
  • OpenVSX —— Eclipse 基金会凋谢的公共插件市场服务(源码开源)

能够依据应用场景自在进行源的切换,见文档 自定义插件市场源。

欢送理解 OpenSumi,参加开源共建~

GitHub 地址:

github.com/opensumi

OpenSumi 官网:

opensumi.com/zh

扫二维码,退出 OpenSumi 社区交换: opensumi.com/zh/communit…