READMESource: master@514a330d
dsh-devlaunch — 一键启动开发环境
在 DSH 项目中的一键启动功能,能把项目的前端、后端等服务全部启动,并输出控制台。
它解决了什么麻烦
- 让ai给你启动,太太太浪费token啦,一键启动0token消耗。
- 每天开项目太繁琐:要开好几个终端窗口、挨个敲命令、还得记顺序。现在配一次,以后点一下「启动」全起来。
- 服务输出到处飘:日志散落在各个终端窗口里,出了错要一个个翻。现在所有输出都收在会话里的「控制台」标签页,错误自动标红。
- 关网页服务就停:以前关掉标签页,dev server 就跟着没了。现在服务跑在后台,关了网页、换了会话都照常运行。
- 不知道服务起好了没:以前只能盯着终端猜。现在可以给每个服务填一个网址,能访问了就会显示「就绪」。
- 端口被占了看不出来:以前报了端口冲突要自己读报错。现在自动识别服务用的端口,两个服务抢同一个端口会直接标红提醒。
- 服务半夜崩了没人管:现在可以打开「崩溃自动重启」,服务挂了会自动拉起来。
功能
一键启动 / 停止
- 会话头部有一个「启动」按钮,点一下就把所有勾选了「启用」的服务一起拉起来
- 服务跑起来后按钮变成「停止(n)」,再点一下全部关掉
- 点按钮右边的箭头展开菜单:每个服务一行,可以看到谁在跑、跑了多久、有没有出错,也能单独启动 / 停止 / 重启某一个
启动预设
- 可以保存几套组合,比如「全量」(什么都开)、「仅前端」(只开前端)
- 菜单里点一下切换预设,「启动」就只开这套里的服务,还会自动关掉不在这套里的服务
- 选择会被浏览器记住,下次打开还是上次那套
控制台(看输出)
- 左边是服务列表,点哪个看哪个;右边是这个服务的实时输出
- 输出自动往下滚;往上翻了就暂停跟随,并出现「回到底部」按钮
- 顶部可以搜索输出内容(命中的地方高亮)、只看错误、一键复制、导出成 .log 文件(导出的就是你现在看到的,包括过滤后的)
- 每个服务显示当前状态:运行中(绿点呼吸闪烁)、就绪(绿点常亮)、出错(红点)
就绪检测
- 配置时给服务填一个网址(比如 http://localhost:3000)
- 后台会隔一会儿访问一次,只要这个地址能返回任何东西(哪怕是 404 页面)就算「就绪」——因为服务已经能接请求了
- 就绪后绿点停止闪烁变成常亮,状态显示「就绪」,一眼就知道能用了
端口提醒
- 服务输出的日志里出现「localhost:5173」这类地址时,控制台顶部会自动出现一个「:5173」小标签,点一下就能直接打开页面
- 如果两个服务占用了同一个端口(典型冲突),相关服务会标红线、标签变红,一眼看出谁打架了
崩溃自动重启
- 每个服务可以单独打开这个开关
- 服务意外挂掉后自动重新拉起;连续挂就等久一点再试(2 秒、4 秒、8 秒……最多等 30 秒),试 5 次还挂就放弃,免得无限折腾
- 稳定跑了半分钟以上,计数自动归零,下次崩溃重新从 2 秒开始
- 你手动点「停止」的,绝对不会被自动拉回来;自动重启过几次也会在界面上标出来(↻n)
配置
- 点菜单里的「配置」打开编辑窗口:加服务、起名、选类别(前端 / 后端 / 其他)、填命令,可选填工作目录、环境变量、就绪网址、要不要自动重启
- 「从 package.json 导入」:一键把项目里定义好的命令列出来让你挑,大仓库里各个子目录的命令也能扫出来,点一下自动填好
- 配置按项目保存,同项目的所有会话共享同一份
安装和开发指南
安装(普通用户)
仓库:https://github.com/cloader/dsh-devlaunch
把插件装进你的 DSH(构建产物已随仓库提供,装完即用,不需要自己编译):
dsh plugin --profile <你的profile名> add dsh-devlaunch
或
dsh plugin --profile <你的profile名> add github:cloader/dsh-devlaunch
装完后:重启 dsh web(插件的后台部分要重启才会加载),然后浏览器刷新一下,会话头部就能看到「启动」按钮了。
安装(本地开发用)
如果你要改代码,用本地目录方式安装,改动直接生效在你的机器上:
git clone https://github.com/cloader/dsh-devlaunch
cd dsh-devlaunch
npm install
npm run build
dsh plugin --profile <你的profile名> add link:<本目录的路径>
开发
npm run build # 构建(改完代码都要跑一次)
npm run typecheck # 类型检查
npm test # 跑全部测试(共 40 项)
想单独跑某一组测试:
node --experimental-strip-types tests/smoke.mjs # 进程启停、重启、无残留
node --experimental-strip-types tests/features.mjs # 就绪检测、自动重启、端口识别、预设
node --experimental-strip-types tests/scan-fixture.mjs # package.json 扫描
改动后怎么让它生效(这俩不一样,记住能省很多困惑):
- 只改了界面(按钮、控制台、配置窗口的样子和交互):跑
npm run build,然后浏览器刷新就够了 - 改了后台(进程管理、就绪检测、自动重启这些逻辑):跑
npm run build之后,必须重启 dsh web 才生效
代码放在哪
src/client/:网页里看到的一切(按钮、控制台、配置窗口)src/host/:后台(进程的启动/停止/重启、就绪检测、命令扫描)src/shared/:两边共用的数据格式和校验- 改配置数据格式时记得三边一起改,跑一遍
npm test再收工
升级日志
0.3.0
- 就绪检测:可以给服务填一个网址,能访问了就显示「就绪」,不用再猜服务起好没有
- 启动预设:可以保存「仅前端」「仅后端」这类组合,一键切换要启动哪些服务,并自动关掉不在组合里的
- 端口提醒:自动识别服务用的端口,点一下就能打开页面;两个服务抢同一个端口会标红提醒
- 崩溃自动重启:服务挂了自动拉起(越挂等越久,最多试 5 次),手动停止的不会被动重启
- 导出日志:控制台加「导出」按钮,把输出存成 .log 文件,方便留档或发给同事
0.2.0
- 界面全面美化:按钮、菜单、弹窗、控制台全部重新设计——统一的图标、动画、配色,明暗主题都好看
- 控制台更好用:新增复制输出、只看错误、搜索输出(高亮命中)
0.1.2
- 导入支持大仓库:从 package.json 导入时,子目录里的各个包也能扫出来, monorepo 项目一键配齐
0.1.1
- 修复重启失灵的问题:某些情况下点「重启」其实没重启成功,现在彻底修好
0.1.0
- 第一个版本:启动按钮、控制台、配置窗口、从 package.json 导入
No comments yet. Be the first to write one.