A professional, pattern-driven installer to bootstrap Laravel + Inertia + Vue apps with an excellent developer experience. It features a composable workflow, interactive multi-selects for optional packages, composer-aware choices, and clean architecture for easy extension.
composer require laravelplus/installer --dev
php artisan laravelplus:installNon-interactive examples:
# Production, skip audit and build, keep existing vendor/node_modules
php artisan laravelplus:install --mode=prod --yes --no-audit --no-build --no-clean
# Dry run (prints exact plan)
php artisan laravelplus:install --dryStart dev environment:
composer run dev- Pattern-driven architecture: Workflow orchestrator, Steps, Strategies, Reporters
- Interactive UX: multi-select optional packages (Official, LaravelPlus, 3rd‑party)
- Composer-aware selection: already installed packages are detected and skipped
- Profiles: save and reuse previous selections
- Per-step elapsed time; clean progress output and final recap
- Events:
StepStarting,StepSucceeded,StepFailed,WorkflowCompleted - Extensible via container‑tagged steps with priorities
packages/laravelplus/installer/config/laravelplus_installer.php:
return [
'clean_dependencies_by_default' => false,
'official_package_options' => [
['key' => 'cashier', 'label' => 'Laravel Cashier', 'composer' => 'laravel/cashier', 'dev' => false],
// ...
],
'laravelplus_package_options' => [
['key' => 'fortress', 'label' => 'LaravelPlus Fortress', 'composer' => 'laravelplus/fortress', 'dev' => false],
// ...
],
'third_party_package_options' => [
['key' => 'pint', 'label' => 'laravel/pint', 'composer' => 'laravel/pint', 'dev' => true],
// ...
],
// Controls order of tagged steps
'step_priorities' => [ /* class => priority */ ],
];Bind your step and tag it laravelplus.installer.step:
$this->app->bind(MyCustomStep::class, fn ($app) => new MyCustomStep(/* deps */));
$this->app->tag([MyCustomStep::class], 'laravelplus.installer.step');Optionally set priority in step_priorities to position it.
- Composer auth issues: run
composer config -g github-oauth.github.com <token> - npm audit failures: the installer treats audit as non‑fatal; use
--no-auditto skip - Memory limit:
COMPOSER_MEMORY_LIMIT=-1 composer install
PRs are welcome. Please run Pint and PHPStan before submitting.
MIT © LaravelPlus