mcpField
L
laravel:upgrade-13

laravel:upgrade-13

github.com/jpcaparas开发15738 次安装17 周前更新
代码仓库

关于 laravel:upgrade-13

此技能指导开发者将应用从 Laravel 12 升级到 Laravel 13,涵盖依赖更新、破坏性变更检查及验证步骤。

主要功能

  1. 01Laravel 13 前置条件检查
  2. 02依赖更新指导
  3. 03破坏性变更清单
  4. 04测试与静态分析验证
  5. 05关键服务的预发布检查

适用场景

  1. 01规划 Laravel 12 到 13 的升级
  2. 02查找受影响的缓存和队列代码
  3. 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