sweetchuck/composer-suite-handler
register() or boot()) to manage suite-level dependencies.php artisan suite:install).install, update, resolve). Feasibility depends on:
composer.lock. Requires careful handling of vendor/ directory permissions and caching.composer validate).| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| Package Maturity | Low stars, no dependents, minimal documentation. | Evaluate via proof-of-concept; consider forking if critical features are missing. |
| Composer Stability | Risk of breaking changes if Composer API evolves. | Pin to a specific Composer version in composer.json. |
| Laravel Compatibility | No Laravel-specific tests or examples. | Test in a staging environment; mock Composer operations for CI. |
| Runtime Safety | Dynamic dependency installation could corrupt the app. | Use --no-plugins --no-scripts flags; validate composer.json before execution. |
| Error Handling | Limited visibility into failure modes (e.g., network timeouts, repo auth). | Wrap calls in try-catch; log Composer output for debugging. |
Why Composer Suite?
composer require, Laravel Packages) cannot?Dependency Scope
composer.lock be handled?Performance
Security
Alternatives
create-project API for suite-level installs?Package Discovery for modular plugins?exec('composer ...')?vendor/package-*) and needing to manage them as a unit.php artisan suite:update).platform-check and platform config.^2.5) to avoid API changes.laravel/framework).composer.json for suite-level dependencies.post-install-cmd scripts).composer.json:
"require": {
"sweetchuck/composer-suite-handler": "^2.0"
}
use Sweetchuck\SuiteHandler\SuiteHandler;
public function boot()
{
$suiteHandler = new SuiteHandler();
$suiteHandler->install(['vendor/package-a', 'vendor/package-b']);
}
Log facade).composer.lock on failure).composer audit).composer.json override for Laravel-specific constraints.www-data) has write access to vendor/ if runtime installs are needed.$suiteHandler->install([...], [
'verbose' => true,
'log_path' => storage_path('logs/composer.log'),
]);
git checkout composer.lock).How can I help you explore Laravel packages today?