Come sfruttare gli script Composer per automatizzare il workflow PHP/Laravel
Molti sviluppatori PHP/Laravel usano Composer solo per installare dipendenze, ma pochi
sfruttano i vantaggi offerti dagli script Composer.
Gli script permettono di automatizzare task ricorrenti come test, analisi statica del codice, refactoring o setup
iniziale del progetto, semplificando il workflow e riducendo errori.
Laravel stesso ne definisce alcuni, in modo da semplificare la configurazione del progetto o l’esecuzione di determinati
task.
Cos’è uno script Composer
Nella sezione scripts di un file composer.json è possibile definire script personalizzati. Ad esempio:
{
"scripts": {
"test": "XDEBUG_MODE=off ./vendor/bin/pest --parallel"
}
}
Dopo aver definito lo script test, se da shell esegui
composer test
verranno eseguiti i test (unit, feature, ecc.) del progetto, in questo caso utilizzando Pest, in parallelo e disabilitando XDebug (che nel mio ambiente locale è sempre attivo - viceverse, potresti tenerlo sempre disattivato e abilitarlo solo all’occorrenza).
Perché usare gli script Composer?
I vantaggi sono molteplici:
- ✅ consistenza: tutti i membri del team di sviluppo usano gli stessi comandi
- ⚙️ automazione: niente più comandi lunghi, dimenticati o con parametri errati
- 🧩 integrazione CI/CD: gli script si integrano facilmente nelle pipeline di GitHub Actions, GitLab CI, ecc.
- 💡 pulizia del progetto: evita di aggiungere al repository file shell duplicati e mantiene la configurazione nel
composer.json
Consigli pratici
-
per i nomi degli script, non usare nomi di librerie, prodotti o tecnologie, ma termini che rappresentino il compito che si vuole eseguire. Il motivo è presto detto: se oggi usi una libreria per eseguire quel task, domani potresti sostituirla con un’altra che esegue lo stesso compito (magari meglio); in quel caso, dovresti cambiare il nome dello script.
Esempio:
❌ `composer phpunit` ❌ `composer pest` ✅ `composer test`Altro esempio:
❌ `composer rector` ✅ `composer refactor` -
utilizza gli stessi nomi di script in tutti i progetti PHP/Laravel, in modo da ritrovarli ovunque e poterli usare facilmente e con familiarità
-
se un progetto non prevede ad esempio l’uso di PHPStan o di Rector, non aggiungere gli script corrispondenti al file
composer.json: renderli disponibili potrebbe confondere gli altri sviluppatori -
se hai XDebug attivo, usa
XDEBUG_MODE=offa inizio comando per disabilitarlo e velocizzare l’esecuzione (ad esempio della suite di test o dell’analisi statica)
Esempi pratici di script utili
Analisi statica del codice
analyse
"analyse": "XDEBUG_MODE=off ./vendor/bin/phpstan analyse --memory-limit 2G --ansi"
Esegue l’analisi statica del codice con PHPStan.
analyse-clear-cache
"analyse-clear-cache": "./vendor/bin/phpstan clear-result-cache"
Elimina la cache di PHPStan (a volte si rende necessario in caso di problemi con l’analisi statica).
Refactoring del codice
refactor
"refactor": "XDEBUG_MODE=off rector process --ansi",
Esegue il refactoring del codice tramite Rector.
refactor-dry
"refactor-dry": "XDEBUG_MODE=off rector --dry-run --ansi"
Esegue Rector in modalità dry run, senza modificare i file: mostra solo quali modifiche verranno apportate.
Formattazione del codice
format
"format": "vendor/bin/pint --dirty --parallel --ansi"
Esegue la formattazione del codice con Pint solo sui file modificati e in parallelo.
Test e code coverage
test
"test": "XDEBUG_MODE=off ./vendor/bin/pest --parallel --bail --colors=always"
Esegue i test con Pest. I test vengono eseguiti in parallelo e se uno fallisce, il resto viene interrotto.
test-architecture
"test-architecture": "XDEBUG_MODE=off ./vendor/bin/pest --parallel --bail --group=architectural --colors=always"
Esegue solo gli architecture test con Pest.
test-coverage
"test-coverage": "php -d memory_limit=-1 ./vendor/bin/pest --coverage --min=80"
Esegue i test con code coverage e mostra il report. Se la coverage è inferiore all’80%, il comando fallisce.
type-coverage
"type-coverage": "XDEBUG_MODE=off ./vendor/bin/pest --type-coverage"
Esegue la type coverage con Pest per segnalare in quali file sia possibile tipizzare parametri e valori di ritorno.
Per concludere
Gli script Composer sono un modo semplice ma potente per standardizzare e velocizzare lo sviluppo in PHP e Laravel. Inizia definendo pochi comandi chiave e vedrai subito la differenza nel tuo flusso di lavoro quotidiano.
Aiuteranno anche gli altri sviluppatori nel tuo team e forniranno un metodo standardizzato per eseguire i task necessari.
Quelli sopra riportati sono quelli che utilizzo più frequentemente; definiscili in base alle tue esigenze e a quelle del tuo team.