config_cache, route_cache, and opcache by detecting changes in config/, routes/, or app/ directories.composer.json, package.json) change.filesystem.updated, composer.installed) and service container.ReactPHP or Symfony EventDispatcher for real-time needs).bootstrap/cache)—requires custom configuration.ChangeDetector facade for clean syntax (e.g., ChangeDetector::hasChanged()).Composer\ScriptHandler events or Illuminate\Filesystem\Events).| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| False Positives | File mtime checks may trigger unnecessarily (e.g., node_modules, log files, or CI artifacts). |
Use FileChangeDetector::ignore() or combine with File::isDirectory()/File::extension() checks. |
| Performance Overhead | Frequent version checks (e.g., Composer, PHP extensions) could slow deployments. | Cache results in Redis or use batch checks during CI/CD (e.g., composer validate + detector). |
| Version Pinning Issues | PHP extension/version detectors may misfire in multi-version environments (e.g., Docker). | Validate against phpversion() or Composer\Semver in custom detectors; test in staging. |
| Laravel-Specific Gaps | No native support for Laravel’s bootstrap/cache or storage/logs. |
Extend FileChangeDetector to target Laravel’s cache directories or use Storage::disk('local')->exists(). |
| Maturity Risks | 0 stars/dependents; early-stage package. | Fork or contribute to the package; evaluate alternatives (e.g., spatie/laravel-medialibrary for files). |
| Event System Complexity | Custom event binding may introduce bugs if not tested thoroughly. | Start with a proof of concept (e.g., FileUpdated event) before full integration. |
config/app.php) or directory level (e.g., config/)? How does this affect cache invalidation granularity?filesystem events or Composer\ScriptHandler)?vendor/, node_modules/, or log files)? Use ignore() or regex-based exclusions?DatabaseSchemaDetector, EnvDetector, or CacheDirectoryDetector)?cache:clear with automated triggers (e.g., FileChangeDetector for bootstrap/cache).mix-manifest.json or vite-manifest.json changes to restart queues or rebuild assets.ComposerPackageChangeDetector to validate PHP/extension versions pre-deploy.config/ or .env to reload services (e.g., config('app.debug')).change-detector script to post-deploy hooks for validation.config('queue.connections')).composer require typhoon/change-detector
FileChangeDetector for critical files (e.g., routes/web.php, config/app.php).filemtime() checks.// app/Providers/ChangeDetectorServiceProvider.php
public function boot(): void
{
event(new FilesystemUpdated('config/app.php'));
// Or use Composer events:
Composer::scriptEvent('post-update-cmd', function () {
ChangeDetector::detect('composer-lock');
});
}
ChangeDetector facade for clean syntax:
// app/Facades/ChangeDetector.php
public static function hasChanged(string $path): bool { ... }
# .github/workflows/deploy.yml
- name: Validate PHP Version
run: php artisan change:detect --check=php-version
# post-deploy.sh
php artisan change:detect --check=config,routes --cache=redis
Cache::remember('file_mtime:config/app.php', now()->addHours(1), fn() => filemtime('config/app.php'));
| Component | Compatibility Notes |
|---|---|
| Laravel 10/11 | Full support (PHP 8.1+). |
| Laravel 9 | Possible with PHP 8.0 polyfills (minor risk; test thoroughly). |
| Composer | Works with composer.json/composer.lock detection; integrates with Composer\ScriptHandler events. |
| Filesystem | Cross-platform (Windows/Linux/macOS) for mtime checks; handle symlinks carefully (use realpath()). |
| Custom Logic | Extendable via ChangeDetector interface (e.g., DatabaseSchemaDetector, EnvDetector). |
| Caching Backends | Cache results in Redis, Memcached, or file-based storage (e.g., `Illuminate\ |
How can I help you explore Laravel packages today?