2026年新laravel项目(v12.3+/v13)刚需4个:barryvdh/laravel-debugbar、itsgoingd/clockwork、tymon/jwt-auth(dev-laravel-13分支)、spatie/laravel-fractal;api项目增选spatie/laravel-passkeys、laravel/pint、barryvdh/laravel-ide-helper;后台系统选filament/filament或laravel/nova;saas多租户必配spatie/laravel-passkeys与tenancy/tenancy。

直接说结论:2026 年真正值得装进每个新 Laravel 项目(v12.3+ 或 v13)的扩展包,不超过 10 个;其中 4 个是「不装就等于裸奔」级别的刚需,另外 6 个要按项目类型选装——API 项目、后台系统、SaaS 多租户场景各自有明确优先级。
调试必须装 barryvdh/laravel-debugbar 和 itsgoingd/clockwork
别只用 dd() 或 Log::info()。前者阻断流程、后者埋得太深。真实开发中你每天要查的不是“哪行报错”,而是“这个请求到底发了几个 SQL?哪些被 N+1 了?中间件执行顺序对不对?”。
-
barryvdh/laravel-debugbar嵌在页面底部,实时显示查询耗时、内存占用、事件触发链,但仅限 Web 请求;它不支持 API 返回头注入调试信息 -
itsgoingd/clockwork是 Chrome 插件 + 后端服务组合,所有请求(包括 API、队列任务、Artisan 命令)都可追踪,且支持自定义面板添加业务指标(比如“当前租户 ID”“缓存命中率”) - 两者共存不冲突,但注意
clockwork的CLOCKWORK_ENABLE环境变量要设为true,否则生产环境可能意外暴露调试数据
API 项目绕不开 tymon/jwt-auth 和 spatie/laravel-fractal
如果你的项目对外只提供 JSON 接口,这两个包几乎无法替代——尤其当接口要对接 App、小程序或第三方系统时。
-
tymon/jwt-auth虽然作者已停止维护,但它在 Laravel 13 中仍稳定运行,且社区分支tymon/jwt-auth:dev-laravel-13已修复 token 刷新的 CSRF 漏洞;不要盲目换laravel/sanctum,后者对无状态 API 支持弱,JWT 的 payload 扩展性仍是刚需 -
spatie/laravel-fractal解决的是“模型嵌套太深、字段要按角色动态过滤、关联数据需分页独立加载”这类问题;不用它,with()容易写成全量 eager load,toArray()又难统一格式 - 注意
fractal的 transformer 类里,include*方法返回的是Fractal\TransformerAbstract实例,不是数组;漏掉return $this->collection($resource, new UserTransformer)这类包装,前端永远收不到嵌套数据
后台系统必装 laravel/nova 或 filament/filament,别碰 laravel-admin
截至 2026 年 5 月,laravel-admin 的 GitHub Issues 中仍有 37 个未关闭的 Laravel 13 兼容性问题,核心的表单异步验证和 TreeSelect 组件在 PHP 8.3 下会触发 TypeError: array_key_exists(): Argument #2 ($array) must be of type array, null given 错误。
-
laravel/nova适合需要商业支持、权限策略要严格匹配 RBAC 规范、且团队接受付费模式的项目;它的Nova::userMenu()可直接注入 Livewire 组件,比硬写 Blade 更安全 -
filament/filament适合偏好纯 PHP 配置、IDE 提示强、要快速上线 MVP 的团队;它的资源类中getActions()返回数组,但每个 action 必须是Action::make()实例,直接 return 字符串会静默失败 - 两者都不依赖前端构建流程,但
filament的插件如filament/spatie-laravel-permission-plugin需手动注册服务提供者,而nova的扩展如epartment/nova-dependency-container直接通过composer require即可启用
容易被忽略但关键的三个底层工具:spatie/laravel-passkeys、laravel/pint、barryvdh/laravel-ide-helper
它们不直接出现在功能列表里,但缺一个,团队协作效率和长期可维护性会断崖式下跌。
-
spatie/laravel-passkeys不是“将来再加”,而是“上线前必须跑通”;Laravel 13 内置的Auth::loginUsingId()无法直接复用通行密钥登录态,必须用它提供的PasskeyLoginController替代默认登录逻辑 -
laravel/pint要在composer.json的scripts里加"pint": "pint --test",否则 CI 流程里没人记得跑;它和 PHP-CS-Fixer 参数不完全兼容,比如@PSR12规则下pint会强制把public function foo()改成public function foo(): void,但你的代码可能还没声明返回类型 -
barryvdh/laravel-ide-helper的php artisan ide-helper:models --nowrite必须每新增一个模型后立即执行,否则 PhpStorm 里点进$user->posts会提示 “Method not found”,而不是自动跳转到HasMany关系定义处
最常被跳过的其实是 spatie/laravel-passkeys 的设备绑定兜底逻辑——用户首次注册通行密钥失败时,系统必须降级到邮箱验证码,且该验证码 token 要和通行密钥 session 绑定,否则攻击者可利用这个窗口期重放请求。这点文档没明说,但 FIDO2 认证规范第 4.3 条写了强制要求。











