dsh-hot-reloader
提供插件热重载功能,修改源码后无需重启即可生效。 适合DSH插件开发者,用于提升开发调试效率,支持第三方插件。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xfgil/dsh-hot-reloader说明文档
阅读完整 README ↗使用
装好之后什么都不用做。 改任意已安装插件的 lib/*.js,一秒左右自动热重载。
重载日志会直接打到宿主日志;也可以随时查状态接口。
观测与手动控制
| 方法 | 路径 | 用途 |
|---|---|---|
GET | /dsh-hot-reloader | 完整状态:监听了哪些包、扫了多少文件、扫描/重载/失败计数、近期日志 |
POST | /dsh-hot-reloader/reload | 手动重载。body 留空 = 全部;支持 ["包名"] 或 {"packages":["包名"]} |
POST | /dsh-hot-reloader/toggle | 暂停 / 恢复自动重载 |
POST | /dsh-hot-reloader/self-reload | 重载本插件自身(开发这个插件时用) |
## 配置
在 profile 的 `cordis.patch.yml` 里覆盖对应行:
```yaml
- id: dsh-hot-reloader
config:
intervalMs: 1000 # 轮询间隔(毫秒)
debounceMs: 400 # 检测到变更后,等写入稳定的时间(毫秒)
reloadSelf: false # 是否连同本插件自己一起自动重载
only: [] # 只监听这些包名(留空 = 全部)
except: [] # 跳过这些包名
extraRoots: [] # 额外监听的绝对路径(不在 loader 树里的目录)
includeAsar: false # 是否连 app.asar 内的宿主包一起监听
ignore: ['.bak', '.test.', '.spec.', '.map'] # 按文件名子串跳过
maxDepth: 8 # 目录递归深度上限
quiet: false # 静默模式:只记录失败
installQuietMs: 8000 # 识别到包管理操作后的让路时长(毫秒);0 = 关闭该机制
profileDir: '' # profile 目录;默认从 loader 树自动推导
installQuietMs 是装包让路机制:检测到 pnpm 正在操作(改写 pnpm-lock.yaml、.modules.yaml 等)时暂停扫描,避免在它换目录的窗口里添乱。默认 8 秒窗口足够覆盖一次普通安装;装了很大的包时可以调大。设成 0 则关闭让路(不建议——那样装包期间可能撞上半成品状态)。
几个实用场景: