Laravelのインストール
下記コマンドでLaravelをインストール。
今回はバージョン9.19がインストールされました。
$ composer create-project --prefer-dist laravel/laravel vite-test cd vite-test
package.json
を開いてviteが含まれていることを確認しましょう。
package.json
{ "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の要素にテキストを表示する簡単なプログラムです。
resources/js/app.js
document.getElementById('app').textContent = 'Hello Vite !';
初期表示されるビューファイルであるwelcome.blade.php
も編集します。
idがappの要素を追加したことと@vite
ディレクティブを使用してアセットパスを指定しています。
publicの出力先パスではなく、ビルド前のパスになるので注意してください。
resources/views/welcome.blade.php
<!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 dev
Laravelも動かすようにする必要があります。
今回はビルドインサーバーを使用します。
$ php artisan serv
http://localhost:8000
にアクセスして「Hello Vite !」が表示されていることを確認してください。
TypeScriptを使う
次はTypeScriptを扱えるようにしてみます。
先ほど作成たapp.jsファイルとディレクトリをtsにリネームして、ファイルを下記のように編集します。
resources/ts/app.ts
document.getElementById('app')!.textContent = 'Hello Typescript !';
vite.config.js
のresources/js/app.js
となっていたところを書き換えます。
vite.config.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
のパスも変更しましょう。
resources/views/welcome.blade.php
@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-refresh
app.ts
をapp.tsx
に変更してReact動作確認ようのファイルを作成します。
resources/ts/app.tsx
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の部分を追加する。
vite.config.js
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
のパスも変更しましょう。
resources/views/welcome.blade.php
@viteReactRefresh @vite(['resources/css/app.css', 'resources/ts/app.tsx'])
エイリアスの設定
インポートするときtsディレクトリのルートからパス指定したいですよね。
その場合はエイリアスを設定します。
vite.config.js
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
も作成します。
vite.config.js
{ "compilerOptions": { "baseUrl": "./resources/ts", "paths": { "@/*": ["*"] } } }
ビルド
開発が終わったら最後にビルドしてファイルに書き出します。
$ yarn run build
ファイルがpublic/build/assets
に書き出されていることを確認してください。
この状態ならVite開発サーバーを閉じても動作確認できると思います。