Laravel Sail環境で「スターターキットが入れにくい!」と思ったことはありませんか?
私はWindowsで開発していて、最近はWSL→Laravel Sailを使うことが多いです。
Laravel Sailは本番環境(Linux)と同じ構成で動かせるのが嬉しい。ですが、Laravel Sailでは、スターターキットを使ったプロジェクト作成がやや面倒です。
なぜなのか、どうすればいいのか、理由と対策を書きました。

Laravel Sailでスターターキットをいれる方法に悩んだら、見てみてください。
なぜLaravel Sailではスターターキットが入れにくいのか
まず認証用ツールの変遷からちょっと説明しますね。
以前はLaravel Breezeが認証用ライブラリとして使われていました。ですがLaravel 12以降は、スターターキット(Livewire / React / Vue/Svelte)が登場しました。
Breezeとスターターキットには、下記の違いがあります。
- Laravel Breeze→既存のLaravelプロジェクトに追加するComposerパッケージだった
- スターターキット→Laravelプロジェクト一式として提供されるようになった

形態が変わった、ということです。ちなみにPackagistのスターターキットのページには、”project”と明記されています。

Composerパッケージであれば、プロジェクトをつくって、後からパッケージを入れることも可能です。ですがプロジェクトの場合は、既存のLaravelプロジェクトへ後から追加するコマンドはありません。
そのため、基本的にはプロジェクト作成時にスターターキットを選ぶ必要があります。こういった流れになります。
- PHPとComposerをインストールする
- Laravelスターターキットを使ってプロジェクト作成する
ですが、Laravel Sailの場合は、ここで困ったことになります。
Laravel Sailは、プロジェクトを作成した後でなければ利用できません。つまり、プロジェクト作成時には、別途PHPやComposerを用意する必要があるのです。

Laravel Sailの売りは、「ComposerやPHPなどインストール不要」というものでしたが、、この便利さが崩れてしまうわけです。
Laravel Sail環境でスターターキットを使いたいなら
ではLaravel Sail環境でスターターキットを使いたいならどうするか。
Windowsの場合はWSL環境を作成した後に、ざっくり2つの方法が考えられます。
普通にPHPとComposerを入れる
下記コマンドをWSL内で実行して、WSL内にPHP・Composer・Laravelインストーラーを入れます。
|
1 2 |
/bin/bash -c "$(curl -fsSL https://php.new/install/linux/8.5)"</code><code class="language-bash"> |
この後、スターターキットを使って、Laravelプロジェクトを作成します。
|
1 |
laravel new my-app |
プロジェクトに移動し、Laravel Sailをインストールします。
|
1 2 3 |
cd my-app php artisan sail:install ./vendor/bin/sail up |
プロジェクトの作成はローカルツール(Windowsの場合はWSL)で行い、プロジェクト作成後はSailを使うという方法です。

ちなみに、ここまでするならLaravel Sailを使わず、普通にWSL内で開発を進めるという手もあります。
一時的なDockerコンテナでComposerを使う
PHPやComposerをWSL内に入れたくない場合は、PHPとComposerが入った一時的なDockerコンテナを使う方法もあります。
方法を説明します。まずdockerコマンドを実行します。
|
1 2 3 4 5 6 7 8 |
docker run --rm \ -u "$(id -u):$(id -g)" \ -e COMPOSER_HOME=/tmp/composer \ -e LARAVEL_INSTALLER_DEFER_HOOKS=1 \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php84-composer:latest \ composer create-project laravel/livewire-starter-kit my-app --stability=dev |
LARAVEL_INSTALLER_DEFER_HOOKS=1は、プロジェクト作成時の初期設定(install:features)を後回しにする指定です。この初期設定にはnpmが必要ですが、Composer用の一時コンテナにnpmは入っていません。そのため後回しにして、Sailを起動してから実行します。laravelsail/php84-composerは、PHPとComposerが入ったSail公式のDockerイメージです。執筆時点では8.4までしか公開されていないため、8.4を使っています。プロジェクトを作るために一時的に使用しています。
次にプロジェクトに移動
|
1 |
cd my-app |
Laravel Sailインストール。--with には必要なサービスをカンマ区切りで指定します。
|
1 2 3 4 5 6 7 |
docker run --rm \ -u "$(id -u):$(id -g)" \ -e COMPOSER_HOME=/tmp/composer \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php84-composer:latest \ php artisan sail:install --with=mysql,redis,mailpit |
この後の流れ
2つのDockerコマンドが終わるとcompose.yamlまで用意できています。ここからはSailのコンテナ側で仕上げます。
Laravel Sailを起動します。
|
1 |
./vendor/bin/sail up -d |
オプションを選択します。
|
1 |
./vendor/bin/sail artisan install:features |
二段階認証・パスキー等の選択画面が出るので、必要な機能を選択します。上下の矢印キーで項目を移動します。デフォルトではすべて選択になっていますが、選択解除したい場合はスペースキーを押します。
選択が終わったらEnterキーを押して確定します。

どちらがおすすめ?
現時点では、最初の方法(WSL内にPHPとComposerをいれる)がおすすめだと推測されます。
ただ、2つ目の方法なら、WSL内にPHPやComposerを入れずに済みます。環境を増やしたくない場合には便利です。
私は2つ目の方法が好きですが、公式に掲載されているわけではありません。うまくいかない場合は、1つ目の方法に切り替えてください。
さいごに
Laravel Sailはかつて、Laravelプロジェクトを作成する公式のインストール方法として案内されていました。その後、現在のスターターキットを利用したインストール方法が中心となりました。
どうもLaravel Sailの位置づけが宙ぶらりんになった感はあります^^;
ただやはり、過去のツールもすべてキレイに移管させるのは大変なのだろうと思います。
Laravel Sailとスターターキットを両方使いたい場合は、今回お伝えした内容を参考にしていただければと思います。

新しく記事を作った時など、Xにてお知らせしています。また情報を知りたいと思ってもらえたら、Xアカウントフォローしてくださいね。
