Cómo crear paquetes Laravel con Composer

Clase 26 de 33Curso Avanzado de Laravel

Resumen

Convertir una funcionalidad en un paquete Laravel es más simple de lo que parece. Aquí verás cómo empaquetar un sistema de rating con Composer, apoyarte en un esqueleto de Git y ordenar la estructura bajo source con namespaces consistentes. Así obtienes un paquete reutilizable, fácil de mantener y listo para cualquier proyecto Laravel.

¿Cómo iniciar un paquete Laravel con Composer?

Para empezar, se crea un archivo composer.json y se prepara el entorno. La base es ejecutar el inicializador de Composer y, para ahorrar tiempo, usar un esqueleto probado desde Git.

¿Qué hace composer init?

  • Crea el archivo composer.json inicial del paquete.
  • Te guía con preguntas; puedes omitirlas y completar luego.
  • Deja listo el proyecto para instalar dependencias.
composer init

¿Por qué usar un esqueleto de Git?

  • Evita “inventar” la estructura de carpetas.
  • Incluye archivos comunes: tests, resources, database, config y más.
  • Recomendado: plantilla de Les Patti “Package Skeleton Laravel”. Se usa “Utilizar como plantilla” y se clona el nuevo repositorio.
# Tras crear el repo desde la plantilla, clónalo # (sustituye por la URL de tu repositorio) git clone <url-del-repositorio>

¿Qué estructura y archivos necesita el paquete?

La base del código vive en la carpeta source. Allí se organizan las partes del sistema de rating y se copian los archivos existentes desde tu proyecto original.

¿Qué carpetas crear en source?

  • contracts: interfaces del dominio.
  • exceptions: excepciones de negocio.
  • models: el modelo principal (por ejemplo, rating).
  • traits: traits reutilizables.
  • events: events que dispara el modelo.

¿Qué archivos copiar del proyecto?

  • Modelo: el modelo rating a source/models.
  • Eventos: los events “model rate” y “model on rate” a source/events.
  • Migraciones: la que crea la tabla ratings a database/migrations.
  • Traits: desde util a source/traits.
  • Excepciones: por ejemplo, InvalidScore a source/exceptions.
  • Configuración: archivo config/rating.php a config/.

¿Qué limpiar del esqueleto?

  • Archivos de ejemplo no usados: comando, clase Skeleton, fake.
  • El service provider se trabajará más tarde.

¿Cómo ajustar namespaces y dependencias con Composer?

Tras copiar la base, instala dependencias y actualiza namespaces para que todo compile. Luego revisa importaciones una a una.

¿Cómo instalar dependencias?

  • Define las dependencias en composer.json.
  • Ejecuta la instalación para poblar la carpeta vendor.
composer install

¿Cómo definir y aplicar el namespace?

  • Elige un namespace único, por ejemplo: laraveles.
  • Sustituye todas las referencias de App por laraveles en modelos, events, traits y excepciones.
<?php namespace laraveles\Models; // ... resto del código del modelo rating
  • Ajusta las rutas de importación al nuevo namespace en cada archivo.
  • Verifica que los events y el modelo rating apunten a las nuevas ubicaciones.

¿Qué revisar para evitar errores?

  • Que cada clase apunte a su carpeta correcta en source/.

  • Que las migraciones y config estén en sus rutas esperadas.

  • Que no queden importaciones antiguas del proyecto original.

  • Habilidades practicadas: empaquetado con Composer. Organización de código en source. Manejo de namespace. Migraciones y config portables. Limpieza de esqueleto.

  • Conceptos clave: paquete Laravel, composer.json, vendor, events, traits, service provider, namespace.

  • Keywords: Laravel, Composer, paquete, rating, migraciones, exceptions, models, config, tests, resources.

¿Tienes dudas sobre la estructura o el namespace? Cuéntame en los comentarios qué parte quieres que profundicemos.