Laravel ValetとViteの組み合わせ
使用環境
Name | Version |
---|---|
Node.js | v18.12.1 |
Vite | 4.0.3 |
@vitejs/plugin-vue | 4.0.0 |
PHP | 8.1.13 |
cpriego/valet-linux | v2.2.37 |
Laravel + Vite
の場合は、Laravel Vite
があるので、不便に感じませんでした。
Vue
やTailwind CSS
など、フロントエンドのみの環境で、Laravel Valet + Vite
は不便に感じていました。
Vite
のデフォルトだと、public
フォルダが、別の用途で使われるからです。
publicDir
public
フォルダの中身を、dist
フォルダにコピーするのが、目的なのかな?*1
public/icon.png
は、dist/icon.png
にコピーされるので、ソースコード内では、/icon.png
と書くのが正しいらしいです。*2
結論
public
フォルダを、copy
フォルダに変更しました。
dist
フォルダを、public
フォルダに変更しました。
root
を、src
フォルダに変更しました。
ルートにあるindex.html
をLaravel Valet
が読まないように、src/index.html
に移動しました。
vite.config.js
import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import path from "path"; // https://vitejs.dev/config/ export default defineConfig({ root: path.resolve(__dirname, 'src'), plugins: [vue()], publicDir: path.resolve(__dirname, 'copy'), build: { outDir: path.resolve(__dirname, 'public'), emptyOutDir: true, }, });
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <link rel="icon" type="image/svg+xml" href="/assets/vite.svg" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Laravel Valet + Vite + Vue</title> </head> <body> <div id="app"></div> <script type="module" src="/main.js"></script> </body> </html>
copy/assets/vite.svg
から、public/assets/vite.svg
にコピーされるので、ソースコードでは/assets/vite.svg
です。
ローカルサーバー起動
Laravel Valet
を使わない選択をした時に、便利だと思ったのは、ローカルサーバーを起動する方法です。
npm run dev
をすると、ローカルサーバーが起動します。
ターミナルで表示されたアドレスをクリックする必要がないように、自動的にブラウザで表示されるように設定しました。
import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], server: { open: true, } });