Laravel + Vue Starter Kit を Docker で検証して改良した fork を公開
公式の laravel/vue-starter-kit(Inertia + Vue 3 + shadcn-vue + Fortify)を Docker で動かし、本番運用に耐える形に書き直したフォークを公開する。テストは 40 passed → 44 passed / 151 assertions。本記事は Vue / Inertia 固有の論点に絞る。
検証環境
- PHP 8.5.5
- Laravel 13.5.0
- Composer 2.9.7
- Node 22.22.2
- npm 10.9.7
- Frontend Vue 3 (Composition API) + Inertia
- Database SQLite (tests)
- OS Docker Desktop (php:8.5-cli-bookworm)
Laravel + Vue Starter Kit を Docker で検証して改良した fork を公開
公式の laravel/vue-starter-kit(Inertia + Vue 3 + shadcn-vue + Fortify)を Docker で動かし、本番運用に耐える形に書き直したフォークを公開する。テストは 40 passed → 44 passed / 151 assertions。本記事は Vue / Inertia 固有の論点に絞る。
backend 改修(6 件)は React・Vue・Livewire で完全に同一なので pillar に集約した:
→ Laravel スターターキット共通 backend を本番化する 6 つの改修
本記事はその cluster として Vue Starter Kit 固有の話だけを扱う。
対象の公式サンプル
| 項目 | 値 |
|---|---|
| 名前 | Laravel + Vue Starter Kit |
| 公式 URL | https://github.com/laravel/vue-starter-kit |
| 改良版 fork | https://github.com/codelift-dev/vue-starter-kit/tree/improvements |
| スタック | Laravel 13 + Inertia + Vue 3 (Composition API) + TypeScript + shadcn-vue + Fortify |
| 元 / 改良版ライセンス | MIT / MIT |
| 検証日 | 2026-04-19 |
| 上流 commit | laravel/vue-starter-kit@1233a92 |
検証環境
pillar と共通(Docker Desktop、PHP 8.5.5 / Laravel 13.x / Node 22.22.2)。
git clone https://github.com/codelift-dev/vue-starter-kit.git
cd vue-starter-kit
git checkout improvements
docker compose -f codelift/docker-compose.yml build
docker compose -f codelift/docker-compose.yml run --rm app
Vue Starter Kit 固有の論点
A. Wayfinder によるビルド順序の落とし穴
React 版と共通の構造的問題。vite.config.ts に @laravel/vite-plugin-wayfinder が入っているため、composer install 前に npm run build すると Vite ビルド中の php artisan wayfinder:generate 呼び出しが vendor/autoload.php を読めずに落ちる。
require(.../vendor/autoload.php): Failed to open stream: No such file or directory
エラーに composer install の文字が出ないので、初見では Vite / Wayfinder のバグを疑ってしまう。
改修: README に Setup セクションを追加し、composer install → npm run build の順を明示。
Vue 3 Composition API と Inertia
Vue Starter Kit は Vue 3 を Composition API(<script setup>)で構成している。React 版が JSX + hooks なのに対し、Vue 版は SFC(単一ファイルコンポーネント)+ ref / computed のリアクティビティで書かれる。UI ライブラリも React 版の shadcn/ui に対し shadcn-vue を使う。これらはコンポーネントをコピーして自分のリポジトリに取り込む方式で、npm 依存ではなく resources/js/components/ui 配下に実体が入る。
ただし production hardening の観点では、フロント層のこの違いはほぼ影響しない。Inertia の動作 — サーバーが JSON page object を返し、初回 HTML に初期 props を data-page 属性で埋め込む — は React 版と同一。したがって Content-Security-Policy を厳格化するときの障壁も同じで、'unsafe-inline' を外して nonce 化するには Inertia のレスポンスレンダリングへの改造が要る。
CodeLift の改良版は CSP を導入する(pillar finding D)が 'unsafe-inline' は保守的に残す。nonce 化したい場合、Inertia を使わない Livewire 版なら可能で、その手法は Livewire の CSP nonce 化記事にある。
J. 設定エンドポイントのレート制限
routes/settings.php で throttle が明示されているのは password 更新ルートのみ。profile update(PATCH)/ destroy(DELETE)は素通し。
Vue 版は React 版と同じく設定変更が HTTP verb で表現されているので、ルート定義に throttle ミドルウェアを足すだけで済む(PATCH に throttle:10,1、DELETE に throttle:3,1)。Livewire 版だけはルーティング形態が違って同じ修正が効かない。
React 版との関係 — なぜ別記事なのか
Vue 版と React 版は backend が完全に同一、フロント固有の findings(A・J)もほぼ同じ挙動になる。「ほぼ同じ記事を 2 本書いてるだけでは」と思うかもしれないが、理由がある:
- 改良版 fork は 別リポジトリ。Vue を採用したチームに「React 版の diff を見ろ」では取り込めない。Vue fork の commit・テスト結果は独立して記録・公開する必要がある
- 一方、共通 backend の説明を 2 度書くのは無価値 — だから pillar に集約し、本記事は Vue 固有部分に純化した
結果として React 記事と本記事の重複は、共有される finding A・J の最小限の記述だけになっている。
改良版の commit 構成
improvements ブランチに 8 commits(README Setup〔A〕/ .env〔B〕/ timezone〔C〕/ forceScheme〔E〕/ SetSecurityHeaders〔D〕/ rate limiter〔G〕/ auth log〔I〕/ settings throttle〔J〕)。B・C・D・E・G・I は pillar 記事、A・J は本記事が出典。
テストは公式版 40 passed → 改良版 44 passed / 151 assertions。
before / after(Vue 固有部分)
| 観点 | 公式版 | 改良版 |
|---|---|---|
php artisan test |
40 passed / 136 assertions | 44 passed / 151 assertions |
| ビルド順序のドキュメント | なし | README に明記 |
| settings endpoints の throttle | password のみ | profile update / destroy にも |
共通 backend 6 件の before / after は pillar 記事を参照。
どのケースで向くか
laravel/vue-starter-kitをテンプレに本番プロダクトを立ち上げる予定- React か Vue か検討中 → backend 化コストは同一。フロントの好み・採用市場・shadcn-vue か shadcn/ui かで決めるのが合理的。詳細は3 種比較記事
再現と取り込み
git clone https://github.com/codelift-dev/vue-starter-kit.git
cd vue-starter-kit
git diff main improvements -- . ':!codelift'
関連記事
- pillar: Laravel スターターキット共通 backend を本番化する 6 つの改修
- 姉妹 cluster: React 版 / Livewire 版
- 比較: React / Vue / Livewire 比較
ライセンス
元サンプル / 改良版とも MIT。検証結果は検証日時点のもの。
この記事を含む比較
関連記事
- Laravel + React Starter Kit を Docker で検証して改良した fork を公開 公式の laravel/react-starter-kit(Inertia + React 19 + shadcn/ui + Fortify)を Docker Desktop で動かし、本番運用に耐える形に書き直したフォークを公開する。テストは公式版の 40 passed をベースに 44 passed / 151 assertions まで増加。本記事は React / Inertia 固有の論点に絞って記録する。
- Laravel + Livewire Starter Kit を Docker で検証して改良した fork を公開 公式の laravel/livewire-starter-kit(Livewire v4 + Flux + Alpine)を Docker で動かし、本番運用に耐える形に書き直したフォークを公開する。テストは公式版の 33 passed をベースに 37 passed / 92 assertions。本記事は Livewire 固有の論点に絞る — 3 つのスターターキットの中で Livewire は最も backend 以外の差分が大きい。
- Laravel スターターキット共通 backend を本番化する 6 つの改修 Laravel 公式のスターターキット(React / Vue / Livewire)は、フロントエンド層こそ違うものの backend は同一の Laravel + Fortify コード を共有している。そのため、本番運用に向けた hardening も 3 つで共通する部分が大半を占める。本記事はその共通部分 — CodeLift が 3 つの fork すべてに適用した backend 改修 — を 1 か所にまとめた pillar(土台)記事である。