Invokable > 戻る
2024-03-31
Laravel

Laravel11でartisanコマンド/コンソールのみのプロジェクト構成

Laravel10まででも可能だったけどLaravel11ならよりシンプルにできそう。

  1. バージョン
  2. プロジェクト作成
  3. bootstrap/app.phpを変更
  4. 不要なファイルを削除
  5. ExampleTestを修正
  6. データベース機能を使わないなら削除
  7. 不要なconfigを削除
  8. composer.jsonを修正
  9. ここまで減らしても動く
  10. 今後よく使うだろうからパッケージ化

バージョン

  • 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.

投稿者 Invokable
1件のコメントを読むにはログインしてください。
登録 ログイン