0.2.0 更新说明
版本可用性
本文整理了 v0.2.0 标签相较 v0.1.0 的源码改动。可安装版本请查看 npm 包页面;Git 标签和 npm 发布是两个独立步骤。
更可靠的服务探测
- Workspace 包管理器:子应用可以继承父目录
packageManager字段或 lockfile 中的包管理器。就近匹配,在 Git 或 workspace 根目录停止,构建与启动使用相同规则。 - 端口估计值:显式设置和脚本端口仍会检查冲突。框架或通用默认端口被占用时,不再直接阻止启动命令,而是等待实际本地 URL;已占用估计端口的监听会被排除,不会自动复用该服务。
- 显式命令的端口:除了项目脚本,也会从显式启动命令中读取
--port、-p、PORT=。flash-tunnel 的显式端口设置优先。 - 一致的启动计划:CLI 选定的命令、工作目录、探测原因和置信度直接传给会话,不再进行第二次探测。
- 稳定的错误码:
NO_RUNNABLE_SCRIPT表示没有可运行服务;非交互环境需要选择 workspace 时,报告WORKSPACE_REQUIRED并列出候选路径。
Vite 预览自动放行主机名
对于自己启动的 Vite 服务,flash-tunnel 会注入额外允许主机名的环境变量:named 模式使用准确主机名,quick 模式使用 .trycloudflare.com,并保留已有值。由你单独启动的服务仍需要自行配置允许的主机名。
识别开发服务地址时只使用 origin,因此额外打印的 /presenter/、/__mcp 等路径不会成为隧道上游路径。
状态保存在项目目录之外
运行时状态和日志位于 ~/.flash-tunnel/,项目数据保存在 projects/<project-key>/,会话索引位于 sessions/。不活跃的项目数据默认在七天后清理,FLASH_TUNNEL_RETENTION_DAYS=0 可以关闭过期清理。
进程树终止和会话退出使用统一的清理逻辑。正常退出、watchdog 恢复和手动重试见清理与恢复。
升级时留意
- 过去回退到 npm 的 monorepo 子应用,现在可能继承根目录的 pnpm、Yarn 或 Bun。结果不符合预期时,请检查更近的声明和 lockfile。
- 估计端口被占用,且服务不打印 URL 时,需要显式指定实际端口。服务自身也要配置相同端口,
--port不会改写启动命令。 - 复用仍需要主动选择:
--reuse、端口冲突提示,或--url <url> --attach。 @flash-tunnel/core调用方可以向startPreviewSession传入可选的serverPlan。计划新增可选的packageManagerSource、portSource元数据;手动构造且没有portSource的命令计划会严格检查端口冲突。
环境要求仍为 Node.js 22.14+ 和已安装的 cloudflared。项目继续处于 0.x 早期开发阶段。