AboutCommand::add() puedes añadir una sección para tu paquete a la salida de php artisan about sin implementar un comando específico.
La documentación oficial incluye un ejemplo básico de registro. Esta página revisa además la implementación de Laravel 13 y profundiza en el momento en que se recopila la información, los tipos en JSON, las colisiones de nombres de sección y el estado del registro en las pruebas.
Registrar el contenido mostrado en el provider
El siguiente ejemplo supone quecourier.enabled y courier.driver ya están registrados como configuración del paquete. Para saber cómo registrar la configuración, consulta Fusión y caché de la configuración de paquetes.
runningInConsole() es una condición que evita registros innecesarios en las peticiones HTTP. No detecta únicamente la ejecución de about, por lo que el registro también se produce con otros comandos de Artisan. Sin embargo, las lecturas de configuración dentro de la closure anterior no se ejecutan en el momento del registro.
Separar el momento del registro del momento de la evaluación
En Laravelv13.35.0, add() no recopila los datos en ese instante, sino que añade una closure de registro al estático $customDataResolvers. Al ejecutar about, se construyen los datos que se van a mostrar y se evalúan las closures de obtención de datos registradas.
Obtener los valores de configuración dentro de la closure refleja mejor el estado en el momento de ejecutar el comando que leerlos antes, fuera de add(), y fijarlos en un array. Por otro lado, el filtro --only se aplica después de evaluar las closures de obtención de datos.
Acme Courier anterior se evalúa igualmente. Que algo no se muestre no significa que no se procese.
Por eso, obtén la información adicional a partir de valores de configuración o de un estado local ligero. Si incluyes comprobaciones de conectividad con APIs externas, consultas a la base de datos o modificaciones de archivos, incluso los comandos que consultan secciones no relacionadas pueden volverse lentos o fallar. Separa las comprobaciones de conectividad y las reparaciones en comandos de Artisan específicos.
Compatibilizar la visualización en CLI con los tipos de JSON
Para consultar solo la información de tu paquete, indica el nombre de la sección convertido a snake case en minúsculas. En el caso deAcme Courier, es acme_courier.
courier.enabled es true y courier.driver es log, el JSON tiene esta forma:
Enabled se muestra como ENABLED. AboutCommand::format() es un helper que permite indicar console para la CLI y json para JSON. El ejemplo anterior solo indica console, por lo que JSON devuelve el valor booleano original. No es necesario reutilizar en JSON la cadena que se muestra en la CLI.
Usar nombres formados por palabras corrientes en inglés separadas por espacios, como en el ejemplo, facilita el manejo de los filtros y de las claves JSON. Las claves que consultan los procesos automatizados pueden cambiar al modificar el nombre mostrado, así que comprueba la compatibilidad en cada versión.
Usar un nombre de sección propio del paquete
add() añade elementos a la misma sección. Indicar una sección con el mismo nombre no sustituye todo el contenido registrado anteriormente.
Elige un nombre como Acme Courier que se distinga de otros paquetes, y limita las adiciones a las secciones estándar de Laravel Environment, Cache, Drivers y Storage a los casos en que sea necesario.
Si registras varias veces un elemento con el mismo nombre en la misma sección, en la CLI pueden quedar varias líneas, pero en JSON se agrupan en la misma clave y se conserva el último valor. Evita también nombres que, aunque se escriban de forma distinta, den lugar a la misma clave tras la conversión a snake case. Concentra el registro en un único lugar y diseña los elementos para que sean únicos tanto en la CLI como en JSON.
Gestionar el estado estático del registro en las pruebas
Al iniciar la ejecución deabout se reinicia $data, que contiene los datos que se muestran, pero se conserva $customDataResolvers, la lista de registros de información adicional. Esto permite volver a recopilar la información a partir de los mismos registros en cada ejecución, pero si el boot() de un provider se ejecuta repetidamente en el mismo proceso PHP, los registros pueden acumularse.
AboutCommand::flushState() es un método que elimina los registros de todos los paquetes y los datos que se muestran. No lo llames en un provider de producción para evitar duplicar tu propia sección. Se perdería también la información de diagnóstico de otros paquetes.
Si reconstruyes la aplicación con tu propia infraestructura de pruebas, decide quién es responsable de reiniciar el estado entre pruebas. Si lo reinicias, hazlo antes de arrancar los providers afectados y realiza después todos los registros necesarios. Comprueba también si tu infraestructura de pruebas existente ya reinicia el estado.
Puntos de verificación antes de publicar
Comprueba las siguientes combinaciones con Probar paquetes Laravel con Orchestra Testbench y en una aplicación real que use tu paquete.Páginas relacionadas
Desarrollo de paquetes para Laravel
Repasa los fundamentos de los providers y del registro de recursos.
Fusión y caché de la configuración de paquetes
Repasa la relación entre los valores por defecto, las sobrescrituras del usuario y la caché de configuración.
Fuentes primarias consultadas
- Documentación oficial de Laravel: añadir información de paquetes a about
- Documentación oficial de Laravel: about y —only
- Laravel Framework v13.35.0: AboutCommand: registro, orden de evaluación, conversión de claves,
format()yflushState(). - Laravel Framework v13.35.0: pruebas de format
- Laravel Framework v13.35.0: pruebas de integración de la salida JSON