2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2でLaravel9+vite+Vue3の構成をsailで構築する

Last updated at Posted at 2022-10-23

はじめに

sailで環境構築を行った際の備忘録となります。
welcom.balde.phpにvueコンポーネントでHello Worldを表示するまでの手順です。

環境構築

aliasの登録

最初にaliasを登録しておくと後の作業が楽になります。

.bashrc
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

sailでプロジェクトを作成

curl -s https://laravel.build/practice-sail-laravel9-and-vue3 | bash
cd practice-sail-laravel9-and-vue3

docker-compose.ymlを編集

今回の構成に不要な記述を削除したものが以下になります

docker-compose.yml
version: '3'
services:
    laravel:
        build:
            context: ./docker/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
networks:
    sail:
        driver: bridge

.envを編集

APP_SERVICEとコンテナ名と合わせる

.env
APP_SERVICE=laravel
WWWUSER=1000
WWWGROUP=1000

コンテナを再ビルドする

sail up -d --build --remove-orphans

Vueのインストール

sail npm install @vitejs/plugin-vue --save-dev

welcom.blade.phpでvueコンポーネントを表示する

App.vueコンポーネントの作成

resources/js/componentsにApp.vueを作成する

App.vue
<template>
    <h1>Hello World</h1>
</template>

app.jsでApp.vueをインポートする

app.js
import './bootstrap';
import { createApp } from "vue";
import App from "./components/App.vue"

const app = createApp(App);
app.mount("#app");

welcom.blade.phpを編集

welcom.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel Vite Vue</title>
        @vite(['resources/css/app.css', 'resources/js/app.js'])
    </head>
    <body>
        <div id="app"></div>
    </body>
</html>

vite.config.jsを編集

WSL2でdockerコンテナ内からvite開発サーバーにアクセスする際にserverオプションが必要になります。
Vue.js devtoolsを利用したかったので個人的には必須の設定です。

vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
    //WSL2でvite開発サーバーへアクセスするために必要
    server: {
        host: true,
        hmr: {
            host: 'localhost',
        },
    },
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
});

vite開発サーバーを立ち上げる

sail npm run dev

localhostへアクセスしHello Worldと表示されていたらOK

参考資料

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?