2024-03-31
Laravel
Laravel11でartisanコマンド/コンソールのみのプロジェクト構成
Laravel10まででも可能だったけどLaravel11ならよりシンプルにできそう。
- バージョン
- プロジェクト作成
- bootstrap/app.phpを変更
- 不要なファイルを削除
- ExampleTestを修正
- データベース機能を使わないなら削除
- 不要なconfigを削除
- composer.jsonを修正
- ここまで減らしても動く
- 今後よく使うだろうからパッケージ化
バージョン
- Laravel 11.x
- PHP 8.3
プロジェクト作成
composer create-project laravel/laravel:^11.0 laravel11-console
cd laravel11-console
bootstrap/app.php
を変更
元のbootstrap/app.php
から
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
commands
のみに。withMiddleware
も削除可能だけどwithExceptions
は必要。
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
commands: __DIR__.'/../routes/console.php',
)
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
withExceptions()
のクロージャ削除までは省略できる。限界まで省略したbootstrap/app.php
<?php
use Illuminate\Foundation\Application;
return Application::configure()
->withRouting(
commands: __DIR__.'/../routes/console.php',
)
->withExceptions()
->create();
不要なファイルを削除
- app/Http 全部
- public 全部
- resources 全部
- routes/web.php
- package.json
- vite.config.js
ExampleTestを修正
削除でもいいけど一応成功するように。
class ExampleTest extends TestCase
{
/**
* A basic test example.
*/
public function test_the_application_returns_a_successful_response(): void
{
$response = $this->artisan('inspire');
$response->assertOk();
}
}
php artisan test
データベース機能を使わないなら削除
- app/Models 全部
- database 全部
不要なconfigを削除
Laravel11ならconfig
ディレクトリごと全部消してもいい。
どのconfigが必要かはそれぞれで違うだろうから後で判断。
composer.json
を修正
残していても影響はないけどautoload
のDatabase部分を削除。
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
},
ここまで減らしても動く
app/
└── Providers
└── AppServiceProvider.php
bootstrap/
├── app.php
├── cache/
└── providers.php
routes/
└── console.php
storage/
tests/
普通のLaravelの使い方の範囲でコンソールのみにしてるだけなのでLaravel Zeroの対応待ちとか気にする必要がなく使っていける。
この後はphp artisan make:command Test
などでコマンドを作っていく。
今後よく使うだろうからパッケージ化
Contribute to kawax/laravel-slim development by creating an account on GitHub.