Actualizar un proyecto de Laravel 11 a Laravel 12
Actualiza paso a paso un proyecto real de Laravel 11 a Laravel 12, desde las herramientas de test hasta la configuración de Laravel 12.
- Lecciones
- 9
- Lectura
- 136 min
- Nivel
- Intermedio
- Actualizado
- 01 El proyecto Laravel 11 de partida y la red de seguridad: tests y Larastan
- 02 composer why-not laravel/framework 12: qué bloquea la actualización y en qué orden se hace
- 03 Actualizar Pest 2 a Pest 3 (PHPUnit 11) con el proyecto en Laravel 11
- 04 Actualizar Larastan 2 a Larastan 3 con PHPStan 2: por qué Rector 2 entra a la vez
Hola, bienvenido. Empezamos un nuevo curso en CursosDesarrolloWeb.es, en el que vamos a actualizar un proyecto real de Laravel 11 a Laravel 12, paso a paso, con sus tests y Larastan comprobando cada cambio.
La guía oficial dice que la actualización lleva 5 minutos, y para el código del proyecto es cierto. Pero en un proyecto real también hay que actualizar Pest y Larastan de la versión 2 a la 3, y Rector de la versión 1 a la 2, que tiene que subir a la vez que Larastan. Y Laravel 11 no recibe parches de seguridad desde marzo de 2026, así que, tarde o temprano, un proyecto en Laravel 11 hay que actualizarlo.
Qué vamos a hacer
Vamos a trabajar sobre un proyecto de tickets de soporte con Breeze, Sanctum, Spatie Permission y Livewire. Está en GitHub, partiremos de su versión en Laravel 11 y lo iremos actualizando juntos, con un commit por paso. Este es el orden que seguiremos:
- Primero pondremos el proyecto en marcha con sus tests, Larastan y Pint en verde, y con
composer auditveremos los 4 avisos de seguridad que Laravel 11 ya no va a corregir. - Antes de cambiar nada,
composer why-notnos dirá qué impide instalar Laravel 12, y descubriremos que uno de los bloqueos es Rector, que la guía oficial no menciona. - Después actualizaremos Pest y Larastan de la versión 2 a la 3, todavía en Laravel 11, y verás el error con el que Composer avisa de que Larastan 3 no se puede instalar sin actualizar también Rector.
- Larastan 3 encontrará 7 errores que Larastan 2 no veía, y la mayoría los corregirá una regla de Rector.
- Con eso hecho, actualizaremos el proyecto a Laravel 12, y
composer auditdejará de mostrar avisos por primera vez en el curso. - Pondremos al día los archivos de configuración con los del esqueleto de Laravel 12. Verás cómo
config:publish --forcesobrescribe sin avisar lo que el proyecto tenía en esos archivos, por qué 74 tests se ponen en rojo sin haber cambiado el archivo.envy qué pasa con los adjuntos que ya existen cuando el discolocalcambia de carpeta. - Y al final, pasaremos Rector con el set de Laravel 12 para aplicar los cambios mecánicos del código, y verás por qué una de sus reglas no llega a ejecutarse.
El stack
Al terminar el curso, el proyecto estará en Laravel 12, sobre PHP 8.2, con Laravel Sail y Composer 2.10. Las comprobaciones pasan a Pest 3 con PHPUnit 11 y a Larastan 3 con PHPStan 2, y los cambios de código se hacen con Rector 2 y rector-laravel 2.5. Sanctum 4, Spatie Permission 6 y Livewire 3 no cambian de versión, porque ya admiten Laravel 12. El proyecto tiene en GitHub un commit por cada paso. Partiremos del tag laravel-11 y terminaremos en el tag laravel-12. Así podrás comparar el proyecto en cualquier momento con el estado que corresponde.
Lo que no cubre
Este curso no repasa las novedades de Laravel 12: para eso tienes el artículo Novedades en Laravel 12 (se abre en una pestaña nueva). Tampoco cambia Breeze por los starter kits nuevos, porque Breeze sigue funcionando en Laravel 12, ni actualiza PHP, ni Livewire a la versión 4, ni Pest a la 4, ni Spatie Permission a la 7, que son actualizaciones aparte y Laravel 12 no las exige. Y si lo que buscas es la lista completa de cambios de la versión, la tienes en Actualiza tus proyectos de Laravel 11 a Laravel 12: guía completa (se abre en una pestaña nueva).
Para quién es
Este curso es para ti si mantienes un proyecto Laravel 11 en producción y tienes que subirlo de versión, tanto si lo actualizaste desde una versión anterior como si nació ya en Laravel 11. Necesitas manejarte con Laravel, Composer, Git y Pest, y también con Laravel Sail, porque todo se ejecuta en sus contenedores. Si Sail no te suena, te recomiendo que antes pases por el curso Docker y Laravel Sail desde cero (se abre en una pestaña nueva). Y si tu proyecto sigue en Laravel 10, empieza por Actualizar un proyecto de Laravel 10 a Laravel 11 (se abre en una pestaña nueva), que termina donde empieza este.
Así que, si te interesa, te espero dentro del curso. Espero que te haya gustado esta introducción. Un saludo.