maglnet/composer-require-checker
CLI tool that scans your PHP sources and composer.json to ensure every used class/function comes from declared dependencies. Detects “soft” transitive deps and missing required PHP extensions, helping prevent breakage after dependency updates.
composer.json, requiring no Laravel-specific modifications.Illuminate\*) as "soft dependencies" if not explicitly required (though Laravel’s require section typically covers this).autoload (e.g., app/Console/Commands) can be scanned via config.Auth::*) as soft dependencies if not explicitly required (though Laravel’s require section usually includes illuminate/support).ClassLoader or autoload-dev may obscure dependency tracking.--no-plugins) required for non-standard vendor/ structures.illuminate/*) be whitelisted in the config?laravel/installer) without breaking scans?autoload-dev and glob patterns for non-standard files.composer-require-checker.json to whitelist known safe dependencies (e.g., Laravel core).- name: Check Composer Dependencies
run: php composer-require-checker.phar check composer.json
--severity=high to filter critical issues.scan-files in config to include:
"scan-files": ["app/Console/*", "app/Providers/*"]
--no-plugins workaround if plugins alter vendor/ structure.composer.json is up-to-date (run composer install first).XDEBUG_MODE=off).composer install
composer-require-checker check composer.json
php artisan test
require entries to composer.json.CONTRIBUTING.md.4.24.0) in CI.composer-require-checker.json) for new projects.--ignore flags for recurring issues:
composer-require-checker check --ignore="illuminate/support" composer.json
src/, app/)..cache/composer-require-checker/ to avoid re-scanning unchanged files.--fast flag if supported).| Failure Mode | Impact | Mitigation |
|---|---|---|
| False positives block merges | Slows down development | Pre-configure whitelists; use --ignore |
| Xdebug slows down scans | CI timeouts | Disable Xdebug (XDEBUG_MODE=off) |
| Custom plugins break scans | Missed dependencies | Use --no-plugins workaround |
| Outdated tool version | Missed PHP/Laravel compatibility | Pin version in CI |
| Large codebase performance | CI timeouts | Parallelize scans; cache results |
How can I help you explore Laravel packages today?