Skip to main content

简介

laravel/multiplex 是一款用于同时运行多个命令的终端 UI(TUI)。Laravel 13 的 php artisan dev 会用它来同时管理 PHP 开发服务器、队列 worker、日志监视、Vite 等本地开发所需的进程,让它们都在一个终端里运行。 它可以按标签页显示每个进程的输出,并支持对输出的搜索和滚动。退出时,各进程的输出会被写回普通终端的滚动缓冲区,因此关闭 TUI 后仍可查阅日志。

安装与直接运行

在 Laravel 应用中,php artisan dev 会自动完成所需配置,因此通常无需单独安装 Multiplex。若要单独使用,请准备 Node.js 22.13 或更高版本,然后通过 npm 安装。
命令以 label,command 形式传入。

TUI 模式与内联模式

当标准输入和标准输出都是 TTY 时,会启动标签页形式的 TUI。按 s 切换为流式显示,按 / 搜索输出,按 r 重启当前选中的进程,按 q 退出。 在没有 TTY 的 CI 或管道处理中,会自动切换到内联模式。每一行都会带上进程标签,按输出到达的顺序显示。若要显式使用内联模式,可指定 -i
在内联模式下,当最后一个进程结束时整个运行也会结束,并将命令是否失败反映到退出码中。若要以 JSON 形式处理执行结果,请使用 --json

自动重启与退出处理

崩溃的进程会等待 1 秒后自动重启,最多重启 5 次。启动后 1 秒内退出的进程不会被重试,因为这通常意味着可执行文件缺失、端口冲突等一开始就无法启动的情况。对于像 build 或迁移这类只运行一次的命令,请指定 --no-restart
Multiplex 在退出或收到信号时会终止子进程的进程组。这样可以避免只剩开发服务器占用端口的情况,方便一并停止多个进程。

注意事项

标准输入不会传递给子进程。因此,php artisan tinker 或迁移确认提示等需要输入的命令无法通过 Multiplex 运行。请在另一个终端中执行交互式命令。 Multiplex 也提供程序化 API,但命令会通过 sh -c 执行。请勿将配置文件或请求等不可信的值嵌入到命令字符串中。

参考资料

最后修改于 2026年8月21日