make:component — コンポーネントを作成するコマンド
artisan
2026.03.16
make:component
解説:Laravel の Blade コンポーネントを作成する Artisan コマンドです。
カテゴリ :artisan
掲載バージョン :Laravel 12・PHP 8.4
名前空間 / FQCN / コマンド :php artisan make:component
関連 :make:view、make:controller、make:class、make:request、make:rule
変更履歴
Laravel 7 で inline コンポーネントサポート追加
Laravel 9 でデフォルトコンポーネントパスを app/View/Components へ変更
要点(TL;DR)
何に使うか 最小限の使い方 よくある罠 Blade コンポーネント(クラス・インライン)を作成 php artisan make:component Alertタグ名とクラス名が衝突すると Component [alert] is already defined --inline を付け忘れるとクラスだけ生成され、ビューが見つからない --tag を指定しないと自動生成されるタグ名が alert になるため既存タグと被る
概要
make:component は Blade コンポーネントを即座に作成できるコマンドです。 クラスコンポーネント(app/View/Components 配下)と匿名(インライン)コンポーネントの両方をサポートし、タグ名の明示も可能です。 実務では UI の再利用性を高めるために頻繁に利用されます。
構文 / シグネチャ
php artisan make:component [options] <name>
引数 型 必須 既定値 説明 <name>string ◯ コンポーネント名(クラス名/ビュー名) --inlineflag × 匿名(インライン)コンポーネントを生成 --tagstring × ビューで使用するタグ名を明示 --forceflag × 同名が存在する場合上書き -h, --helpflag × ヘルプを表示
戻り値 :なし(生成したファイルのパスを標準出力に表示)
例外/副作用 :既に同名のクラスまたはビューが存在し、--force が付与されていない場合 RuntimeException を投げます。 生成されたクラスは自動で namespace App\View\Components; が付与され、app/View/Components 配下に配置されます。
使用例
最小例
php artisan make:component Alert
実務例
// app/View/Components/Alert.php
namespace App\View\Components;
use Illuminate\View\Component;
class Alert extends Component
{
public string $type;
public function __construct(string $type = 'info')
{
$this->type = $type;
}
public function render()
{
return view('components.alert');
}
}
{{-- resources/views/components/alert.blade.php --}}
<div class="alert alert-{{ $type }}">
{{ $slot }}
</div>
{{-- 任意のビューで使用 --}}
<x-alert type="warning">
注意: 重要な情報です。
</x-alert>
よくある落とし穴・注意
罠 原因 対処 タグ名衝突 既存の HTML タグや別コンポーネントと同名 --tag で別名を設定、またはクラス名を変更ビューが見つからない --inline を付け忘れ、クラスのみ生成--inline オプションを付与、または手動でビューを作成ネーミング規則違反 クラス名にスペースや記号を含む PascalCase で記述、make:component --tag= でビュー名を分離 実行時にファイルが上書きされない 既存ファイルが存在し --force を付け忘れ php artisan make:component Alert --force を実行
代替・関連APIとの比較
手段 メリット デメリット 選択基準 make:componentクラス・ビューが同時生成、タグ名自動推論 生成ファイルのカスタマイズが難しい 迅速に標準的なコンポーネントを作成したい時 make:view + 手動クラスフレキシブルな構成 手間が増える 既存のプロジェクト構造に合わせたい時 php artisan make:controller + viewMVC の慣習に沿う コンポーネント専用の機能がない コントローラとビューを合わせて作成したい時
テスト例(Pest)
it('creates a component class and view', function () {
$this->artisan('make:component', ['name' => 'TestComponent'])
->expectsOutput('Component [TestComponent] created successfully.')
->assertExitCode(0);
expect(app_path('View/Components/TestComponent.php'))->toBeFile();
expect(resource_path('views/components/test-component.blade.php'))->toBeFile();
});
トラブルシュート(エラー別)
症状/エラー 原因 対処 Component [x] is already defined.同名のクラスまたはビューが存在 --force を付与、または名前を変更View [components.alert] not found.ビューが生成されていない --inline を付け忘れた、または手動で resources/views/components/alert.blade.php を作成Class App\View\Components\Alert does not exist.Autoload が更新されていない composer dump-autoload を実行
参考リンク