Recomendaciones en Laravel producción: Optimiza tus archivos

Video thumbnail

Anteriormente ya he comentado como puedes subir tu app a producción:

Laravel a producción/deployment mediante Railway

Quería agregar un pequeño dato adicional relacionado con la carpeta vendor, ya que es clave entender cómo funciona especialmente cuando vamos a producción. Lo podemos comparar con lo que sucede en el ecosistema de Node.js con la carpeta node_modules.

Cuando creamos un proyecto en Laravel, es común que tengamos también una carpeta node_modules, especialmente si trabajamos con herramientas como Vue, React, Tailwind, etc. Esta carpeta contiene paquetes necesarios solo durante el desarrollo, y luego ejecutamos npm run build para generar los archivos optimizados para producción.

Con la carpeta vendor, sucede algo similar. Aunque puedes subirla tal cual a tu servidor de producción, lo ideal es optimizarla previamente, ya que contiene también dependencias que solo se usan durante el desarrollo.

Comando recomendado para optimizar vendor:

composer install --no-dev --optimize-autoloader

¿Qué hace cada parte?

  • install Instala las dependencias.
  • --no-dev: evita instalar dependencias marcadas como de desarrollo en el composer.json.
  • --optimize-autoloader: genera un autoload más eficiente para mejorar el rendimiento.

Esto equivale, en términos simples, a tener una versión “minificada” de tus dependencias PHP para producción.

Limpieza de caché (muy importante)

En producción, también es recomendable limpiar la caché, ya que podría estar causando errores que en local no aparecen.

Puedes hacerlo con:

php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear

Si no tienes acceso a la terminal (como en un hosting compartido), puedes hacerlo manualmente desde un cliente FTP. Por ejemplo, puedes:

  1. Renombrar la carpeta bootstrap/cache
  2. Crear una nueva carpeta vacía llamada cache

Subir el proyecto y verificar que todo funcione

Si todo va bien después de unos días, puedes eliminar la carpeta vieja.

Recomendaciones prácticas

Antes de ejecutar el comando Composer: Mueve o renombra la carpeta vendor actual, por si la necesitas luego, ya que es la carpeta que usamos al momento de desarrollar.

No subas la carpeta vendor ni node_modules al repositorio Git, esto es importante si en base a los pasos anteriores renombras la carpeta vendor y la mantienes en el proyecto, va a ser rastreada por git.

Si vas a subir el proyecto por FTP: puedes también comprimirlo con ZIP (incluyendo la nueva carpeta vendor optimizada), súbelo y descomprímelo en el servidor.

NO olvides revisar el Log del proyecto en Laravel cuando esta en producción

Video thumbnail

Seguramente cuando subes tu excelente aplicación en Laravel a producción y obviamente pasas aquí la bandera a production en tu .env, o simplemente no subes a producción el .env como te he comentado en otros videos, entonces seguramente te quedas temblando de posibles problemas que puedan ocurrir en tu aplicación es decir errores y no sepas cómo detectarlos.

Esto lo puedes hacer fácilmente cuando tú pasas este check a producción y automáticamente todos los errores se guardan en un log y no tienes que configurar nada más; entonces, lo único que tienes que hacer aquí es buscar ese log que se encuentra en

storage/logs

A partir de los registros que puedes empezar a aplicar correcciones, así que, simplemente lo descargas lo abres y evalúas lo mostrado en el mismo y realices las correcciones pertinentes basado en el mismo cada cierto tiempo.

Tip final

Estas recomendaciones yo mismo las aplico por ejemplo cuando voy a actualizar los archivos de la carpeta public/build, no la elimino de inmediato, si no, la renómbralo (por ejemplo, __build) y conserva ese respaldo unos días hasta asegurarte de que todo funciona bien.

Acepto recibir anuncios de interes sobre este Blog.

Veremos el comando que debemos de ejecutar al momento de subir tu app a producción de Laravel y Hablaré sobre la importancia de revisar el log del proyecto cuando la app del proyecto está en producción.

| 👤 Andrés Cruz

🇺🇸 In english