> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Multiplex — 集中管理本地开发进程的 TUI

> laravel/multiplex 的初步调研。介绍 Laravel 13 的 php artisan dev 所使用的，支持多进程标签页显示、搜索与自动重启的终端 UI。

## 简介

[`laravel/multiplex`](https://github.com/laravel/multiplex) 是一款用于同时运行多个命令的终端 UI（TUI）。Laravel 13 的 `php artisan dev` 会用它来同时管理 PHP 开发服务器、队列 worker、日志监视、Vite 等本地开发所需的进程，让它们都在一个终端里运行。

它可以按标签页显示每个进程的输出，并支持对输出的搜索和滚动。退出时，各进程的输出会被写回普通终端的滚动缓冲区，因此关闭 TUI 后仍可查阅日志。

## 安装与直接运行

在 Laravel 应用中，`php artisan dev` 会自动完成所需配置，因此通常无需单独安装 Multiplex。若要单独使用，请准备 Node.js 22.13 或更高版本，然后通过 npm 安装。

```bash theme={null}
npm install -g @laravel/multiplex
```

命令以 `label,command` 形式传入。

```bash theme={null}
multiplex 'server,php artisan serve' 'queue,php artisan queue:listen' 'vite,npm run dev'
```

## TUI 模式与内联模式

当标准输入和标准输出都是 TTY 时，会启动标签页形式的 TUI。按 `s` 切换为流式显示，按 `/` 搜索输出，按 `r` 重启当前选中的进程，按 `q` 退出。

在没有 TTY 的 CI 或管道处理中，会自动切换到内联模式。每一行都会带上进程标签，按输出到达的顺序显示。若要显式使用内联模式，可指定 `-i`。

```bash theme={null}
multiplex -i 'build,npm run build' 'test,npm test'
```

在内联模式下，当最后一个进程结束时整个运行也会结束，并将命令是否失败反映到退出码中。若要以 JSON 形式处理执行结果，请使用 `--json`。

```bash theme={null}
multiplex --json 'build,npm run build' 'test,npm test'
```

## 自动重启与退出处理

崩溃的进程会等待 1 秒后自动重启，最多重启 5 次。启动后 1 秒内退出的进程不会被重试，因为这通常意味着可执行文件缺失、端口冲突等一开始就无法启动的情况。对于像 build 或迁移这类只运行一次的命令，请指定 `--no-restart`。

```bash theme={null}
multiplex --no-restart 'build,npm run build'
```

Multiplex 在退出或收到信号时会终止子进程的进程组。这样可以避免只剩开发服务器占用端口的情况，方便一并停止多个进程。

## 注意事项

标准输入不会传递给子进程。因此，`php artisan tinker` 或迁移确认提示等需要输入的命令无法通过 Multiplex 运行。请在另一个终端中执行交互式命令。

Multiplex 也提供程序化 API，但命令会通过 `sh -c` 执行。请勿将配置文件或请求等不可信的值嵌入到命令字符串中。

## 参考资料

* [Laravel 官方文档：Artisan - The Dev Command](https://laravel.com/docs/13.x/artisan#the-dev-command)
* [laravel/multiplex README](https://github.com/laravel/multiplex)


## Related topics

- [Artisan 控制台](/zh-CN/artisan.md)
- [进程](/zh-CN/processes.md)
- [Laravel Nightwatch 入门](/zh-CN/blog/nightwatch-introduction.md)
- [Laravel Maestro — 启动套件开发的编排器](/zh-CN/blog/maestro-introduction.md)
- [2026 年 6 月 Laravel 更新](/zh-CN/blog/changelog/202606.md)
