jiazekang
dsh-office
可以读写办公文件的插件,支持拖动办公文件到对话框
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
dsh-office
DSH Office 文档插件:Excel 读取 + 精准修改 + 办公文件拖入附件栏。
结构
packages/
dsh-office/ # Office 文档工具插件:Excel 读取/精准修改(exceljs)+ 拖入附件栏
常用命令(在仓库根目录执行)
pnpm install # 安装所有包依赖
pnpm --filter dsh-office build # 构建单个插件(tsc 类型检查 + tsdown 打包到 lib/)
pnpm --filter dsh-office smoke # dsh-office 冒烟测试(真实文件读写验证)
pnpm --filter dsh-office watch # 开发热构建
pnpm -r typecheck # 全部包类型检查
安装 / 联调(web profile)
# 把本地开发版挂到 web profile(link: 协议,改完重新 build 即生效)
dsh plugin --profile web add link:D:\Porject\DSH\dsh-office\packages\dsh-office
# dsh-office 的 exceljs 是外部依赖,link: 开发模式下需单独装进 profile
dsh plugin --profile web add exceljs
# 不启动服务查看合并后的配置树,确认插件行已进入
dsh --profile web --dump-config
# 重启 dsh web 后生效
发布到 npm
cd packages/dsh-office
npm publish
# 用户安装:dsh plugin --profile web add dsh-office
# (npm 安装会自动带上 exceljs 依赖,无需手动装)
插件写法速记
- 插件 = 导出
name/inject/Config/apply的 npm 包。 - 工具用
defineTool({ name, description, parameters, output, execute })定义, 参数与输出都必须是 JSON Schema,output.render返回ContentBlock[]。 - 所有注册都包在
ctx.effect(fn, label)里,卸载时自动清理。 @deepseek-ai/*运行时服务声明为 peerDependencies,构建时保持外部(deps.neverBundle), 运行时由宿主进程解析,避免重复实例。- 包内
cordis.patch.yml用insert把插件行加进 roster;声明dsh.bundle.patch后dsh plugin add会自动把它加入 profile 的 bundles 层。
更完整的参考:@linxin666/dsh-ssh(服务端全流程)与 @linxin666/dsh-client-ui-task-board(客户端全流程),
源码见 https://github.com/zhu1090093659/dsh-web-ui。