Поставил 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