Чиним vue hot reload в laradock

Поставил laravel в связке с laradock. При установке vue столкнулся с проблемой, что hot reload не работает.

До Laravel Mix 6

Помог комментарий на github. В package.json для таска hot надо добавить --host 0.0.0.0

"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --disable-host-check --config=node_modules/laravel-mix/setup/webpack.config.js --host 0.0.0.0"

Также стоит проверить как подключен скрипт. Должен использоваться mix, а не asset.

<script src="{{ mix('js/app.js') }}" defer></script>

Laravel Mix 6

В laravel mix 6 команду изменили

"hot": "mix watch --hot"

Чтобы заработало, надо добавить следующие строки в webpack.mix.js:

mix.webpackConfig({
    devServer: {
        host: '0.0.0.0',
    }
});

Laravel 9 и выше, vite

Laravel 9 перешел с использования пакета laravel mix на vite. Процесс интеграции vue есть в документации, а чтобы hot reload заработал в laradock нужно добавить в vite.config.js после блока plugins

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

В качестве хоста можно прописать APP_URL из laravel .env