🎃 12 meses por 75 €

El plan anual a mitad de precio hasta el 31 de octubre.

Aprovechar la oferta

🎃 Halloween: 12 meses por 75 €

Plan anual a mitad de precio, para altas y renovaciones. Solo hasta el 31 de octubre.
Aprovechar la oferta
Saltar al contenido
Curso Actualizar un proyecto de Laravel 12 a Laravel 13
02/08 Antes de tocar nada composer why-not laravel/framework 13: PHP 8.3, Pest 4 y Tinker 3 antes que el framework
Tu lectura Quedan 10 min
Lección 2 de 8 · Antes de tocar nada

composer why-not laravel/framework 13: PHP 8.3, Pest 4 y Tinker 3 antes que el framework

10 min de lectura Laravel 13

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ú):

Terminal
sail composer outdated --direct --major-only
Salida
Legend: ! patch or minor release available - update recommended ~ major release available - update possible guzzlehttp/guzzle 7.16.0 ~ 8.3.0 Guzzle is a PHP HTTP client library laravel/tinker 2.11.1 ~ 3.0.2 Powerful REPL for the Laravel framework. livewire/livewire 3.8.11 ~ 4.4.8 A front-end framework for Laravel.

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:

Terminal
sail composer outdated --direct --major-only --ignore-platform-req=php
Salida
Legend: ! patch or minor release available - update recommended ~ major release available - update possible guzzlehttp/guzzle 7.16.0 ~ 8.3.0 Guzzle is a PHP HTTP client li... laravel/framework 12.70.1 ~ 13.38.0 The Laravel Framework. laravel/tinker 2.11.1 ~ 3.0.2 Powerful REPL for the Laravel ... livewire/livewire 3.8.11 ~ 4.4.8 A front-end framework for Lara... pestphp/pest 3.8.7 ~ 5.3.3 The elegant PHP Testing Framew... pestphp/pest-plugin-laravel 3.2.0 ~ 5.0.1 The Pest Laravel Plugin spatie/laravel-permission 6.25.0 ~ 8.3.2 Permission handling for Larave...

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.

Lo que queda de esta lección
  1. 02composer why-not: qué bloquea Laravel 13
  2. 03La segunda pregunta: qué bloquea Pest 4
  3. 04La guía oficial: Updating Dependencies
  4. 05El plan
Sigue leyendo con tu suscripción El curso completo, con el certificado y el foro, está incluido en la suscripción. Ver los planes