laravelplus/installer

LaravelPlus Installer: artisan command to bootstrap Laravel+Inertia apps

Installs: 4

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/laravelplus/installer

v1.0.0 2025-10-31 09:19 UTC

This package is not auto-updated.

Last update: 2025-11-01 07:47:45 UTC


README

Packagist Version Downloads PHP Laravel License

CI Pint PHPStan

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.

Quickstart

composer require laravelplus/installer --dev
php artisan laravelplus:install

Non-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 --dry

Start dev environment:

composer run dev

Features

  • 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

Configuration

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 */ ],
];

Extending the Installer

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.

Troubleshooting

  • Composer auth issues: run composer config -g github-oauth.github.com <token>
  • npm audit failures: the installer treats audit as non‑fatal; use --no-audit to skip
  • Memory limit: COMPOSER_MEMORY_LIMIT=-1 composer install

Contributing

PRs are welcome. Please run Pint and PHPStan before submitting.

License

MIT © LaravelPlus