composer why-not laravel/framework 12: qué bloquea la actualización y en qué orden se hace
Hola, bienvenido. En esta lección vamos a preguntarle a Composer qué nos impide instalar Laravel 12, antes de cambiar nada en composer.json. composer outdated nos dirá qué paquetes tienen versiones nuevas, y composer why-not, qué paquete impide instalar una versión concreta. Con sus respuestas vamos a decidir el orden de la actualización, y veremos que uno de los bloqueos es un paquete que la guía no menciona: Rector.
En esta lección no vamos a cambiar nada en el proyecto: al terminar, tendremos el plan.
composer outdated: lo que hay por delante
Vamos a empezar por composer outdated. --direct limita la lista a los paquetes que están en nuestro composer.json, sin las dependencias de las dependencias. Esta es la salida el 21 de octubre de 2026 (las versiones más nuevas cambiarán cuando lo lances tú):
La lista tiene 9 paquetes con una versión major por delante y uno, Collision, con una versión minor. Y fíjate en lo que falta o no sale como esperarías:
rector-laravelaparece con la versión 2.5, no con la 2.7, que es la última.outdatedsolo enseña las versiones que se pueden instalar con el PHP del contenedor, y las versiones 2.6 y 2.7 derector-laravelexigen PHP 8.3. Por lo mismo no aparecen Spatie Permission 7 ni Pint: las versiones nuevas de Spatie Permission exigen PHP 8.3, y la versión 1.30 de Pint que tenemos es la última que admite PHP 8.2.- Sanctum y Breeze no aparecen, porque la versión instalada ya es la última y admite Laravel 12.
outdated nos dice que hay mucho por delante, pero no qué es obligatorio para Laravel 12 y qué no. Guzzle 8, Tinker 3 y Livewire 4 son versiones major nuevas, y Laravel 12 no exige ninguna de las 3. Para saber qué bloquea la actualización, hay que preguntárselo a Composer directamente.
- 02composer why-not: qué bloquea Laravel 12
- 03La segunda pregunta: qué bloquea Larastan 3
- 04La guía oficial: Updating Dependencies
- 05El plan