关于 laravel:upgrade-13
此技能指导开发者将应用从 Laravel 12 升级到 Laravel 13,涵盖依赖更新、破坏性变更检查及验证步骤。
主要功能
- 01Laravel 13 前置条件检查
- 02依赖更新指导
- 03破坏性变更清单
- 04测试与静态分析验证
- 05关键服务的预发布检查
适用场景
- 01规划 Laravel 12 到 13 的升级
- 02查找受影响的缓存和队列代码
- 03部署前验证升级结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:upgrade-13安装后在 Claude Code 中输入/laravel:upgrade-13确认已加载。
详细介绍
升级到 Laravel 13
Laravel 13(于 2026 年 3 月发布)是一次刻意保持小规模的升级。请在专用分支中按此清单逐项操作,并确保升级前后测试均通过。
前置条件
- PHP 8.3+(13.x 支持 PHP 8.3–8.5;不再支持 8.2)
- 开始升级前,12.x 的测试套件全部通过
命令
# Bump core dependencies in composer.json
"laravel/framework": "^13.0",
"laravel/tinker": "^3.0",
"phpunit/phpunit": "^12.0",
"pestphp/pest": "^4.0"
sail composer update # or: composer update
# Verify
sail artisan about # or: php artisan about
sail artisan test --parallel # or: php artisan test --parallel
破坏性变更清单
高影响:
- 将对
VerifyCsrfToken的引用替换为PreventRequestForgery(旧名称是已弃用的别名)——请参阅laravel:request-forgery-protection - PHP 最低版本为 8.3;运行
composer update前先升级 PHP
中等影响:
config/cache.php新增serializable_classes(默认值为false);请将要作为对象存入缓存的类加入允许列表upsert()在uniqueBy为空时现在会抛出InvalidArgumentException——请修复调用处,不要依赖无效的 SQL- 默认缓存前缀/会话 Cookie 名称从下划线改为连字符;如果依赖框架默认值,请在
.env中固定CACHE_PREFIX、REDIS_PREFIX、SESSION_COOKIE(避免所有用户退出登录和缓存失效)
低影响(如适用,请检查):
- 序列化的 Eloquent 集合现在会恢复预加载的关联(会影响排队任务)
JobAttempted事件:$exceptionOccurred(bool)→$exception(?Throwable);QueueBusy:$connection→$connectionName- 路由匹配时,域名路由现在优先于非域名路由
- 带 JOIN 的 MySQL
DELETE现在会编译ORDER BY/LIMIT,而不是静默忽略它们 - 自定义缓存存储需要实现
touch();自定义队列驱动需要实现大小检查方法
操作模式
- 每次只升级一个主版本;切勿跳过 12.x → 13.x 的升级步骤
- 阅读完整的升级指南:https://laravel.com/docs/13.x/upgrade
- Laravel Boost ^2.0 提供 AI 辅助的
/upgrade-laravel-v13流程——很有用,但请像审查任何 PR 一样检查其差异 - 在后续 PR 中采用 13.x 的新功能(属性、JSON:API 资源、AI SDK),不要放在升级 PR 中
验证
- 完整测试套件和静态分析(PHPStan)均通过
- 启动应用;验证会话可持续保存,且缓存能正常预热(前缀变更)
- 在部署到生产环境前,先在预发布环境中测试队列、调度器和 Webhook
评论
支持 Markdown