dock:DSH Web 工作台基础插件

前言

在 DSH Web 环境中,功能插件如果要展示侧边栏、编辑器视图、状态栏或命令入口,通常需要一套统一的布局与挂载机制。dock 提供的是一个基础工作台外壳:它先给出 VSCode 风格的活动栏、侧边栏、编辑器区、状态栏和命令系统,再通过 ctx.workbench 注册表让功能插件把自己的面板、编辑器视图、活动项、状态项与命令挂载进来。

它由 AKS1st 维护,许可证为 MIT。dock 本身只负责工作台外壳,不附带文件浏览、文本编辑等具体能力;文件浏览、文本编辑、图片查看、Markdown 查看和 Git 管理等能力,由 dock 系列功能插件按需安装。

这是什么

dock 是 DSH Web 工作台基础插件。它提供 VSCode 风格布局外壳,包括活动栏、侧边栏、编辑器区和状态栏,并开放一套注册表服务,供功能插件挂载:

  • 面板
  • 编辑器视图
  • 活动栏项
  • 状态栏项
  • 命令

功能插件通过这些注册入口接入 dock 提供的工作台外壳,不需要每个插件自行处理整体布局。

核心功能

布局外壳

dock 提供以下基础布局区域:

  • 活动栏:左侧垂直条带,可注册图标项,点击切换侧边栏面板。
  • 侧边栏:承载功能插件提供的面板。
  • 编辑器区:多标签编辑器视图。
  • 状态栏:底部状态项注册入口。

停靠与窗口

dock 支持整个工作台停靠在屏幕四边,也支持悬浮窗口模式。独立浮窗可拖动和缩放。

布局信息保存在 localStorage 中,刷新后恢复。

命令系统

dock 提供命令注册与调用能力,使用 executeCommand 进行命令注册和调用。

开放注册表

dock 通过 ctx.workbench 提供注册服务,功能插件可以使用以下方法挂载扩展:

  • registerActivityBarItem
  • registerPanel
  • registerEditorView
  • registerStatusBarItem
  • registerCommand

这些注册方法都会返回反注册函数。配合 ctx.effect 使用时,可以在插件停用时自动清理已注册内容。

安装与启用

环境要求

dock 需要 DSH Web 环境,客户端平台为 Web。安装时使用 --profile web

要求:

  • Node >=20
  • peer 依赖 cordis ^4.0.0-rc.7,由 DSH 自带
  • react / react-dom ^18.2.0 为可选 peer;未提供时工作台 UI 不激活

安装 dock

推荐从 npm registry 安装:

dsh plugin --profile web add dock-base

也可以通过 GitHub 备选安装:

dsh plugin --profile web add github:AKS1st/dock

按需安装功能插件

dock 只提供工作台外壳。若需要具体能力,可以按需安装功能插件:

dsh plugin --profile web add dock-files
dsh plugin --profile web add dock-editor
dsh plugin --profile web add dock-images
dsh plugin --profile web add dock-markdown
dsh plugin --profile web add dock-git

也可以分别使用 GitHub 备选安装:

dsh plugin --profile web add github:AKS1st/dock-files
dsh plugin --profile web add github:AKS1st/dock-editor
dsh plugin --profile web add github:AKS1st/dock-images
dsh plugin --profile web add github:AKS1st/dock-markdown
dsh plugin --profile web add github:AKS1st/dock-git

只安装 dock 本身也可以,它会作为干净的工作台外壳存在。

典型用法

组合建议

以下组合按需选择,不需要全部安装。

1、只想浏览文件:

dsh plugin --profile web add dock-base
dsh plugin --profile web add dock-files

2、浏览并编辑文本:

dsh plugin --profile web add dock-base
dsh plugin --profile web add dock-files
dsh plugin --profile web add dock-editor

3、完整文件工作台,在文件浏览和文本编辑基础上增加图片与 Markdown 查看:

dsh plugin --profile web add dock-base
dsh plugin --profile web add dock-files
dsh plugin --profile web add dock-editor
dsh plugin --profile web add dock-images
dsh plugin --profile web add dock-markdown

4、需要管理 Git 时,在以上任意组合基础上增加:

dsh plugin --profile web add dock-git

这些功能插件通过 ctx.workbench 提供的注册表协作。dock 自身不依赖其他 dock 系列插件;反过来,dock-filesdock-editordock-imagesdock-markdowndock-git 依赖 dock 提供的工作台外壳。功能插件之间安装顺序不敏感。

开发

在仓库中可以使用以下命令:

pnpm install
pnpm run build
pnpm run check

src/client/contract.ts 是工作台对外契约。功能插件内有一份该契约的 vendored 副本,修改契约时需要同步更新这些副本。

适用场景与注意

dock 适合以下场景:

  • 需要在 DSH Web 环境中搭建统一工作台外壳
  • 需要让多个功能插件挂载面板、编辑器视图、状态项和命令
  • 需要按场景组合 dock 系列插件,而不是一次性安装完整能力

需要注意:

  • dock 基座只提供工作台外壳,不附带文件浏览、编辑等具体能力。
  • 插件会以当前 dsh 进程权限运行。安装前应检查源码与许可证。
  • 本项目许可证为 MIT。
  • reactreact-dom 是可选 peer 依赖;未提供时工作台 UI 不激活。
  • dock 的对外契约位于 src/client/contract.ts,功能插件内有 vendored 副本,改动时需要同步。

结尾

dock 的价值在于把 DSH Web 工作台的布局、注册表、命令挂载和布局持久化收敛到一个基础插件中。后续功能插件只需要关心自己的能力本身,并通过 ctx.workbench 挂载到统一外壳。

GitHub 地址:

https://github.com/AKS1st/dock

目录页:已核实资料中未提供可确认的目录页地址。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜