Saltar al contenido
Curso Claude Code en equipo: una sola forma de trabajar
19/29 Bloque opcional · El paquete Composer de convenciones Comando artisan install para un paquete interno de Laravel: configs base y stubs
Tu lectura Quedan 16 min
Lección 19 de 29 · Bloque opcional · El paquete Composer de convenciones

Comando artisan install para un paquete interno de Laravel: configs base y stubs

16 min de lectura Claude Code 2.1

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:

Terminal
mkdir -p config stubs src/Console/Install

La base de PHPStan, conventions/config/phpstan-base.neon, lleva la extensión de Larastan y el nivel del equipo:

conventions/config/phpstan-base.neon Nuevo +5
1includes:
2 - ../../../larastan/larastan/extension.neon
3
4parameters:
5 level: 8

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:

conventions/config/rector-base.php Nuevo +20
1<?php
2
3declare(strict_types=1);
4
5use Rector\Config\RectorConfig;
6use Rector\Set\ValueObject\LevelSetList;
7use Rector\Set\ValueObject\SetList;
8use RectorLaravel\Set\LaravelSetList;
9
10return RectorConfig::configure()
11 ->withSets([
12 SetList::DEAD_CODE,
13 SetList::CODE_QUALITY,
14 LevelSetList::UP_TO_PHP_84,
15 LaravelSetList::LARAVEL_CODE_QUALITY,
16 LaravelSetList::LARAVEL_COLLECTION,
17 LaravelSetList::LARAVEL_ARRAY_STR_FUNCTION_TO_STATIC_CALL,
18 LaravelSetList::LARAVEL_ELOQUENT_MAGIC_METHOD_TO_QUERY_BUILDER,
19 ])
20 ->withComposerBased(laravel: true);

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.

Lo que queda de esta lección
  1. 02El caso de pint.json
  2. 03El comando conventions:install
  3. 04Instalar las plantillas en helpdesk
  4. 05Una plantilla por archivo
Sigue leyendo con tu suscripción El curso completo, con su proyecto final, el certificado y el foro, está incluido en la suscripción. Ver los planes