start。
start 命令先跑生产构建,再用与 preview 相同的流程启动构建好的扩展。
什么时候使用 start
- 编译完成后立刻手动验证生产行为。
- 复现 watch 模式与生产输出之间的运行时差异。
- 在本地跑一次类生产检查,而不需要分别跑
build再跑preview。
start 命令的能力
与其他命令的区别
dev:dev 服务器 + 热模块替换(HMR)/ watch 模式build:仅生产构建preview:不构建、直接启动已构建好的扩展start:依次执行build+preview
用法
参数与 flag
有两个已废弃的别名从
--help 中隐藏,但仍然可用:
--wait-format <pretty|json>会映射到--output,并在 stderr 上警告一次。请把脚本迁移到--output。--author与--author-mode会映射到--debug。
浏览器支持
start 没有 Safari 路径。传入 --browser safari(或 webkit-based)会以 E_COMMAND_UNSUPPORTED_FOR_TARGET 退出。Safari 目标请用 dev 或 build。
自动化元数据
start 会把就绪元数据写入:
dist/extension-js/<browser>/ready.json
--no-browser 时,这对自动化很有用:
- 在启动外部 runner 之前等待
status: "ready"。 - 把
status: "error"当作确定性的失败信号处理。 - 用
runId与startedAt关联某次具体的运行时会话。
--no-browser 与就绪同步
--no-browser 只会禁用浏览器启动。它并不会在生产构建完成之前阻塞外部 runner。
对于面向生产的 Playwright、持续集成(CI)和 AI 工作流:
- 把
extension start --no-browser作为生产者进程。 - 把
extension start --wait --browser=<browser>作为就绪闸门。 - 只有在
status: "ready"之后才启动外部浏览器自动化。
--wait 在 error / 超时时以非零状态退出,并会忽略来自已死进程(pid 已不存在)的过期契约。
因为 start 可能很快就结束,所以只要时间戳落在 60 秒的窗口内,已完成运行留下的契约同样算数。
--wait 需要一个本地项目路径。传入远程 URL 会以 E_ARGS 退出。
如果你在同一次调用中同时传入 --wait 与 --no-browser,--wait 优先。命令会以 wait-only 模式运行。
用 --output json 输出机器可读结果
--output json 会在 stdout 上打印 schema-1 信封,每行一个 JSON 对象:
- 普通的
start运行会在构建前打印一个status: "started"帧。它带有项目路径、浏览器列表、请求的端口和pid。 start --wait运行成功时会打印一个status: "ready"帧。它的value.results数组按浏览器带出完整的就绪契约。- 构建失败时会打印一个
ok: false帧,其中status: "build-failed"、error.code: "E_COMPILE",随后进程以1退出。
日志 flag
这些 flag 是实验性的,可能在小版本之间发生变化。共享的全局选项
也支持 全局 flag。示例
用默认浏览器启动
在 Firefox 中启动
构建但跳过浏览器启动
行为说明
start不会运行 dev 服务器,也不提供热模块替换(HMR)或 watch 模式。start面向生产模式;本地迭代开发请用dev。- 对于机器消费者,请解析
dist/extension-js/<browser>/ready.json,而不是终端文本。

