Laravelのインストール
下記コマンドでLaravelをインストール。
今回はバージョン9.19がインストールされました。
$ composer create-project --prefer-dist laravel/laravel vite-testcd vite-testpackage.jsonを開いてviteが含まれていることを確認しましょう。
{ "private": true, "scripts": { "dev": "vite", "build": "vite build" }, "devDependencies": { "axios": "^0.27", "laravel-vite-plugin": "^0.6.0", "lodash": "^4.17.19", "postcss": "^8.1.14", "vite": "^3.0.0" }}確認できたらモジュールをインストール
$ yarn動作確認
何も設定していない状態で動作確認してみましょう。
app.jsを次のように書き換えます。
これはidがappの要素にテキストを表示する簡単なプログラムです。
document.getElementById('app').textContent = 'Hello Vite !';初期表示されるビューファイルであるwelcome.blade.phpも編集します。
idがappの要素を追加したことと@viteディレクティブを使用してアセットパスを指定しています。
publicの出力先パスではなく、ビルド前のパスになるので注意してください。
<!DOCTYPE html><html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel</title> @vite(['resources/css/app.css', 'resources/js/app.js']) </head> <body> <div id="app"></div> </body></html>Viteの開発サーバーを起動します。
$ yarn run devLaravelも動かすようにする必要があります。
今回はビルドインサーバーを使用します。
$ php artisan servhttp://localhost:8000にアクセスして「Hello Vite !」が表示されていることを確認してください。
TypeScriptを使う
次はTypeScriptを扱えるようにしてみます。
先ほど作成たapp.jsファイルとディレクトリをtsにリネームして、ファイルを下記のように編集します。
document.getElementById('app')!.textContent = 'Hello Typescript !';vite.config.jsのresources/js/app.jsとなっていたところを書き換えます。
import { defineConfig } from 'vite';import laravel from 'laravel-vite-plugin';
export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/ts/app.ts'], refresh: true, }), ],});welcome.blade.phpの@viteのパスも変更しましょう。
@vite(['resources/css/app.css', 'resources/ts/app.ts'])再度画面を確認して「Hello Typescript !」が表示されていることを確認してください。
Reactを使う
Reactを動かすのに必要なモジュールをインストールします。
$ yarn add -D react react-dom @types/react @types/react-dom @vitejs/plugin-react @vitejs/plugin-react-refreshapp.tsをapp.tsxに変更してReact動作確認ようのファイルを作成します。
import React from 'react'import { createRoot } from 'react-dom/client'
const App = () => { return <h1>Hello React !</h1>}
const root = createRoot( document.getElementById('app') as HTMLElement)root.render(<App />)vite.config.jsはパスの変更の他Reactの部分を追加する。
import { defineConfig } from 'vite';import laravel from 'laravel-vite-plugin';import react from '@vitejs/plugin-react';
export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/ts/app.tsx'], refresh: true, }), react() ],});welcome.blade.phpの@viteのパスも変更しましょう。
@viteReactRefresh@vite(['resources/css/app.css', 'resources/ts/app.tsx'])エイリアスの設定
インポートするときtsディレクトリのルートからパス指定したいですよね。
その場合はエイリアスを設定します。
import { defineConfig } from 'vite';import laravel from 'laravel-vite-plugin';import react from '@vitejs/plugin-react';
export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/ts/app.tsx'], refresh: true, }), react() ], resolve: { alias: { '@': '/resources/ts', }, },});これで@を指定すると/resources/tsからパスが指定されます。
import { Title } from '@/components/Title'ただこれだけだとVSCodeで開くとエラー表示になりますので、tsconfig.jsonも作成します。
{ "compilerOptions": { "baseUrl": "./resources/ts", "paths": { "@/*": ["*"] } }}ビルド
開発が終わったら最後にビルドしてファイルに書き出します。
$ yarn run buildファイルがpublic/build/assetsに書き出されていることを確認してください。
この状態ならVite開発サーバーを閉じても動作確認できると思います。

