核心用法
dev-serve 是一个面向开发者的自动化工具,通过 up/down/ls/restart 四个简洁命令,将本地开发服务器包装为生产级 HTTPS 服务。用户只需执行 dev-serve up ~/projects/myapp,工具会自动:从目录名派生子域名、探测 package.json 中的 dev 脚本、启动 tmux 会话运行开发服务器、通过 Caddy Admin API 动态添加反向代理路由,并完成端到端健康检查。
显著优点
- 零配置公网暴露:自动处理 DNS 子域名、TLS 证书申请(依赖 Caddy 的 DNS-01 挑战),无需手动配置 nginx 或 frp
- 智能框架适配:内置对 Vite、Next.js、Nuxt、SvelteKit 的自动检测,特别为 Vite 自动注入
allowedHosts配置解决 403 问题 - 端口自治管理:5200+ 端口段自动避让占用,避免手动协调冲突
- 声明式状态管理:JSON 状态文件 + Caddyfile 双向同步,支持
ls查看全量运行实例 - 安全边界清晰:强制依赖 Caddy 的 wildcard TLS,不自行处理证书;通过
0.0.0.0绑定限制在本地回环
潜在局限
- 硬依赖外部基础设施:必须预先部署 Caddy 并配置 wildcard DNS,学习成本转嫁至 companion skill
- 自动修改源码风险:
vite.config.*的自动 patch 可能引入意外 diff,虽打印回滚提示但仍需人工确认 - 无内置访问控制:依赖 Tailscale/LAN 等网络层隔离,子域名一旦分配即全网可达(Caddy 层未配置 basic auth)
- 90s 健康检查瓶颈:大型项目冷启动可能超时,需手动介入
tmux attach - 状态非高可用:
~/.config/dev-serve/state.json为本地文件,多机部署需自行同步
适合人群
- 拥有固定域名、需要频繁向协作者/客户演示本地开发进展的全栈工程师
- 已采用 Tailscale/WireGuard 组网、追求「类生产环境」HTTPS 体验的开发者
- 厌倦 ngrok/Cloudflare Tunnel 随机域名、希望固定子域名的工作流用户
常规风险
| 风险类别 | 说明 |
|---------|------|
| 证书泄露 | Caddy 证书存储于 `~/.local/share/caddy`,需确保该目录权限 0700 |
| 子域名接管 | 若 DNS wildcard 指向共享服务器,恶意用户可抢注未使用的子域名映射至自身端口 |
| 源码污染 | Vite 配置自动修改后若未 review,可能意外提交至版本控制 |
| 端口暴露 | `--host 0.0.0.0` 绑定虽经 Caddy 反向,但若绕过代理直接访问原端口则失去 TLS 保护 |