用途:在 Surge 仓库中启动本地开发环境,并在持续运行的后台终端里运行 dev 服务器与 Livebook,便于后续登录调试。
主要能力:
- 启动:从仓库根目录执行 cd "$(git rev-parse --show-toplevel)" && tail -f /dev/null | zsh -ic 'dev',必须以后台方式立即运行(block_until_ms: 0),并需要 required_permissions: ["all"]。tail -f /dev/null | 管道用于保持 stdin 打开,否则 IEx 会退出。dev 会执行 mix deps.get、停掉 4000 端口已有监听,再运行 iex -S mix phx.server。若需 Phoenix 启动后自动开新 Livebook 笔记本,用 devo 代替 dev。
- 验证:lsof -nP -tiTCP:4000 -sTCP:LISTEN,预期 HTTP 4000、HTTPS 4001,IEx 节点 surge_dev@127.0.0.1,安装 Livebook 时在 8080。
- 登录:用 playwright-cli --headed 登录,凭据来自 priv/repo/seeds.exs。默认为 dennis@surge.app;仅在用户明确要求时用 admin@surge.app(系统超级管理员,进入 /admin/platforms)。登录前可用 psql 将两个种子用户主题设为 system,因为 Playwright 的 Chrome 不继承 macOS 深色模式,需执行 page.emulateMedia({ colorScheme: 'dark' })。
- 调试:尽量复现用户的表单修改、点击与 push_patch 导航,而非直接 goto 最终 URL;可用 playwright-cli eval 检查 DOM 文本与 LiveView 注释占位符,判断客户端 patch 是否未渲染。
- 迁移问题:出现 Phoenix.Ecto.PendingMigrationError 时用 mix ecto.migrations 查看 down 状态,并在单独终端运行 mix ecto.migrate;不要新增迁移文件,未经用户明确批准绝不执行 mix ecto.reset / ecto.drop 等破坏性命令,卡住时应停止并报告。
限制与注意:服务器运行期间 mix run -e 可能因 PromEx 占用 9568 端口失败,简单改库可用 psql;结束前删除调试产物(如 rm -rf .playwright-cli),但保持浏览器打开供用户核对。具体分类、收费与更多配置资料未提供。