Comando artisan install para un paquete interno de Laravel: configs base y stubs
Hola, bienvenido. En esta lección vamos a llevar al paquete de convenciones la configuración base de PHPStan y Rector, y las plantillas de los archivos de configuración que necesita cada repo. Después vamos a crear el primer comando del paquete, conventions:install, que deja esas plantillas en un repo sin sobrescribir nada y avisa de lo que no coincide.
En los repos del equipo de Marta, phpstan.neon tenía 2 niveles distintos y rector.php 3 listas de reglas. Nadie lo decidió así: cada repo se configuró a mano al crearlo, copiando del anterior, y cada uno siguió su camino. Con la configuración base en el paquete, cada repo hereda las reglas del equipo y solo declara lo suyo, que es qué carpetas se analizan. Y con un comando que copia las plantillas, el siguiente repo nace con los mismos archivos que los demás.
La configuración que vamos a mover es la que escribimos en la lección 3, la del Setup Profesional, sin cambiar ni una regla. Si quieres saber qué hace cada una, tienes la Guía completa para usar Larastan en Laravel (se abre en una pestaña nueva) para PHPStan y el artículo Laravel Pint Avanzado: Configuración Personalizada y Reglas (se abre en una pestaña nueva) para Pint. Aquí nos centramos en dónde vive cada archivo y cómo llega a cada repo.
La configuración base de PHPStan y Rector
PHPStan y Rector permiten que la configuración de un repo herede de otro archivo. PHPStan, con includes. Rector, porque su configuración es un archivo PHP que devuelve un objeto, y un archivo puede cargar otro con require y seguir configurando lo que devuelve. Así que el paquete guarda la base y cada repo la incluye.
Vamos a crear las carpetas que necesitamos en esta lección, en la pestaña conventions:
La base de PHPStan, conventions/config/phpstan-base.neon, lleva la extensión de Larastan y el nivel del equipo:
La documentación de PHPStan dice que las rutas de includes se resuelven desde la carpeta del archivo que las contiene. Este archivo va a estar en vendor/cursosdesarrolloweb/conventions/config/, así que ../../../ es vendor/, y la ruta llega a vendor/larastan/larastan/extension.neon en cualquier repo.
La base de Rector, conventions/config/rector-base.php, lleva los sets de reglas del equipo. Es el rector.php de tu proyecto sin withPaths(), porque las carpetas las decide cada repo:
RectorConfig::configure() devuelve un objeto al que se le van encadenando métodos, y el archivo lo devuelve tal cual. El rector.php de cada repo lo carga y añade sus carpetas, como veremos en un momento.
- 02El caso de pint.json
- 03El comando conventions:install
- 04Instalar las plantillas en helpdesk
- 05Una plantilla por archivo