【Laravel9系】 Laravel Sail Viteを使ってVue.js3系の開発環境を用意する。

Laravel9系でViteが公式プラグインとして使えるようになったということでVue.js3系の環境をサクッと構築したいと思います。

環境

  • Laravel 9x
  • Vue.js 3x
  • Vite 3x

Laravelをインストール

Dockerがデスクトップにインストールされていることを前提に進めます。
以下のコマンドを順に叩いていきます。

curl -s https://laravel.build/laravel_react_app | bash
cd laravel_react_app
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
sail up -d

http://localhostにアクセスすると初期画面が表示されるようになるかと思います。

Vue.jsをインストール

各種Vue.js3系のパッケージをインストールします。
今回使用するVue.jsのバージョンが3系のため、VuexとVue Routerのバージョンは4系になります。

# コンテナ内で bashの起動方法
sail shell
npm install vue@next
npm install vue-loader@next -D
npm install vue-router@next
npm install vuex@next
npm install @vitejs/plugin-vue

App.vueファイルを作成

resources/js/App.vueファイルを作成します。

<template>
    <div>Laravel 9 Vite with Vue.js3 !!</div>
</template>

app.jsファイルを作成

resources/js/app.jsファイルを作成します。
createApp関数をimportしその引数にApp.vueコンポーネントを設定します。

import "./bootstrap";
import "../css/app.css";

import { createApp } from "vue";
import App from "./App.vue";
// Vue Routerを使用する場合はrouter.jsを作成しインポートする
// import router from "./router";
// Vuexをを使用する場合はstoreフォルダ以下にファイルを作成しインポートする
// import store from "./store";

const buildApp = async () => {
    const app = createApp(App);
    // Vue Routerを使用する場合
    // app.use(router);
    // Vuexをを使用する場合
    // app.use(store);

    app.mount("#app");
};

buildApp();

ビューファイル編集

resources/views/welcome.blade.phpを編集します。

<!doctype html>
<html data-theme="light" lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ config('app.name') }}</title>
    <!-- Scripts -->
    @vite('resources/js/app.js')
    <!-- Styles -->
    @vite('resources/css/app.css')
</head>
<body>
    <div id="app"></div>
</body>
</html>

vite.config.jsを修正

aliasを設定しておくとimportの際にパスがわかりやすくなるので設定しておくと便利です。

import { defineConfig } from "vite";
import laravel from "laravel-vite-plugin";
import vue from "@vitejs/plugin-vue";

export default defineConfig({
    server: {
        hmr: {
            host: "localhost",
        },
    },
    plugins: [
        laravel(["resources/css/app.css", "resources/js/app.js"]),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
    resolve: {
        alias: {
            "@": "/resources/js",
        },
        extensions: [".vue", ".js"],
    },
});

詰まったところ

公式のドキュメントや他の方の記事を参考にしながら今回、環境を構築させていただいたのですが、
ビルドした際、以下のエラーが出て真っ白になってしまいました。

 http://0.0.0.0:5173/@vite/client net::ERR_ADDRESS_INVALID

解決策は以下のURLに書いていました。

https://laracasts.com/discuss/channels/vite/laravel-vite-issue?page=1&replyId=807406

どうやら以下のコードをvite.config.jsに追記してやる必要があるようです。

server: {
    hmr: {
        host: 'localhost',
    },
},

動作確認

ビルドして動作確認します。

sail shell
npm run dev

http://localhostにアクセスしてLaravel 9 Vite with Vue.js3 !!と表示されれば成功です。

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。