From 05de3da8a00509b2ca4a67154e3d977715e00edd Mon Sep 17 00:00:00 2001 From: Herpaderp Aldent Date: Fri, 24 Apr 2026 11:23:14 +0200 Subject: [PATCH] feat: upgrade to Laravel 11 monorepo setup with composer-merge-plugin - Upgrade PHP requirement to ^8.2 and Laravel framework to ^11.0 - Replace seatplus/web package requirement with wikimedia/composer-merge-plugin and laravel/wayfinder ^0.1.4 (now resolved via local packages) - Add replace block so Composer satisfies cross-package deps locally without Packagist - Add merge-plugin config to include packages/*/composer.json - Register package service providers via extra.laravel.providers (L11 pattern) - Register providers also in config/app.php for IDE support - Add package namespaces to autoload.psr-4 (packages/*/src/) - Add Model::preventLazyLoading() to AppServiceProvider (non-production guard) - Add jsconfig.json with @/ path mapping for Vue IDE support - Update .gitignore: ignore /packages/ (tracked as separate git repos) - Update .env.example and .editorconfig minor formatting - Add barryvdh/laravel-ide-helper to require-dev Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .editorconfig | 2 +- .env.example | 2 +- .gitignore | 2 ++ app/Providers/AppServiceProvider.php | 3 +- composer.json | 49 +++++++++++++++++++++++----- config/app.php | 4 +++ jsconfig.json | 10 ++++++ 7 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 jsconfig.json diff --git a/.editorconfig b/.editorconfig index 8f0de65c5..4d418ac4c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,7 +11,7 @@ trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false -[*.{yml,yaml}] +[*.{yml,yaml,vue}] indent_size = 2 [docker-compose.yml] diff --git a/.env.example b/.env.example index 5bc34be1c..5f25a4746 100644 --- a/.env.example +++ b/.env.example @@ -6,7 +6,7 @@ APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=127.0.0.1 -DB_PORT=3306 +#DB_PORT=3306 #TODO needs to be removed from .env.example DB_DATABASE=seatplus DB_USERNAME=seatplus DB_PASSWORD=secret diff --git a/.gitignore b/.gitignore index 5ec6c4ba3..f5eb5dac0 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ _ide_helper.php package-lock.json /resources/ /lang + +/packages/ diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b65b..ff8093f8c 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Database\Eloquent\Model; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -19,6 +20,6 @@ public function register(): void */ public function boot(): void { - // + Model::preventLazyLoading(! app()->isProduction()); } } diff --git a/composer.json b/composer.json index 8dd4643f7..749cd2e5b 100644 --- a/composer.json +++ b/composer.json @@ -13,19 +13,25 @@ ], "license": "MIT", "require": { - "php": "^8.1", + "php": "^8.2", "ext-json": "*", "ext-redis": "*", "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^10.0", + "laravel/framework": "^11.0", "laravel/tinker": "^2.8", - "seatplus/web": "^4.0", - "symfony/process": "^6.3.4" + "laravel/wayfinder": "^0.1.4", + "wikimedia/composer-merge-plugin": "^2.1" + }, + "replace": { + "seatplus/web": "*", + "seatplus/auth": "*", + "seatplus/eveapi": "*", + "seatplus/esi-client": "*" }, "require-dev": { + "barryvdh/laravel-ide-helper": "^3.0", "fakerphp/faker": "^1.9.1", "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0" }, @@ -33,7 +39,10 @@ "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" + "Database\\Seeders\\": "database/seeders/", + "Seatplus\\Eveapi\\": "packages/eveapi/src/", + "Seatplus\\Web\\": "packages/web/src/", + "Seatplus\\Auth\\": "packages/auth/src/" } }, "autoload-dev": { @@ -56,12 +65,33 @@ "@php artisan lang:publish", "@php artisan vendor:publish --tag=laravel-assets --ansi --force", "@php artisan vendor:publish --tag=web-static --force", - "@php artisan vendor:publish --tag=web --force" + "@php artisan vendor:publish --tag=web --force", + "Illuminate\\Foundation\\ComposerScripts::postUpdate", + "@php artisan ide-helper:generate", + "@php artisan ide-helper:meta" ] }, "extra": { "laravel": { - "dont-discover": [] + "dont-discover": [], + "providers": [ + "Seatplus\\Web\\Providers\\WebServiceProvider", + "Seatplus\\Auth\\Providers\\AuthServiceProvider", + "Seatplus\\Eveapi\\Providers\\EveapiServiceProvider" + ] + }, + "merge-plugin": { + "include": [ + "packages/*/composer.json" + ], + "recurse": true, + "replace": false, + "ignore-duplicates": false, + "merge-dev": false, + "merge-extra": true, + "merge-extra-deep": true, + "merge-replace": true, + "merge-scripts": false } }, "config": { @@ -70,7 +100,8 @@ "sort-packages": true, "allow-plugins": { "pestphp/pest-plugin": true, - "php-http/discovery": true + "php-http/discovery": true, + "wikimedia/composer-merge-plugin": true } }, "minimum-stability": "dev", diff --git a/config/app.php b/config/app.php index ef76a7ed6..afaabebba 100644 --- a/config/app.php +++ b/config/app.php @@ -186,6 +186,10 @@ * Package Service Providers... */ + \Seatplus\Eveapi\EveapiServiceProvider::class, + \Seatplus\Web\WebServiceProvider::class, + \Seatplus\Auth\AuthenticationServiceProvider::class, + /* * Application Service Providers... */ diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 000000000..ebec89642 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["resources/js/*"], + "@actions/*": ["resources/js/actions/*"] + } + }, + "exclude": ["node_modules", "dist"] +}