composer why-not laravel/framework 13: PHP 8.3, Pest 4 y Tinker 3 antes que el framework
Hola, bienvenido. En esta lección vamos a preguntarle a Composer qué nos impide instalar Laravel 13, antes de cambiar nada en composer.json. Con composer outdated y composer why-not vamos a decidir el orden de la actualización, y veremos por qué lo primero que la bloquea es la versión de PHP del contenedor.
En esta lección no vamos a cambiar nada en el proyecto: al terminar, tendremos el plan.
composer outdated: lo que hay por delante
Lo primero es ver qué paquetes tienen una versión major nueva. --direct limita la lista a los paquetes que están en nuestro composer.json, sin las dependencias de las dependencias, y --major-only deja solo los que tienen una versión major por delante. Esta es la salida el 21 de octubre de 2026 (las versiones más nuevas cambiarán cuando lo lances tú):
Fíjate en lo que falta: ni Laravel 13 ni Pest 4. outdated solo enseña las versiones que se pueden instalar con el PHP del contenedor, y todas las versiones de Laravel 13 y de Pest 4 exigen PHP 8.3. Para ver lo que hay por delante sin contar con PHP, outdated admite la opción --ignore-platform-req=php:
Ahora sí aparecen Laravel 13 y Spatie Permission 8, que exigen PHP 8.3, y Pest aparece con la versión 5, que es la última. Pero Pest 5 exige PHP 8.4, y la guía de Laravel 13 sube Pest a la versión 4, así que nuestro objetivo es Pest 4, no la última versión que enseña la lista. Por eso esta opción es útil para ver qué hay, pero no para decidir qué instalar: ignora la restricción que más nos condiciona.
outdated nos dice que hay bastante por delante, pero ¿qué es obligatorio para Laravel 13 y qué no? Guzzle 8, Livewire 4 o Spatie Permission 8 son versiones major nuevas, y la lista no dice si Laravel 13 las exige. Para saber qué bloquea la actualización tenemos why-not.
- 02composer why-not: qué bloquea Laravel 13
- 03La segunda pregunta: qué bloquea Pest 4
- 04La guía oficial: Updating Dependencies
- 05El plan