简介
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。
自动重启与退出处理
崩溃的进程会等待 1 秒后自动重启,最多重启 5 次。启动后 1 秒内退出的进程不会被重试,因为这通常意味着可执行文件缺失、端口冲突等一开始就无法启动的情况。对于像 build 或迁移这类只运行一次的命令,请指定--no-restart。
注意事项
标准输入不会传递给子进程。因此,php artisan tinker 或迁移确认提示等需要输入的命令无法通过 Multiplex 运行。请在另一个终端中执行交互式命令。
Multiplex 也提供程序化 API,但命令会通过 sh -c 执行。请勿将配置文件或请求等不可信的值嵌入到命令字符串中。