Laravel 5.4-Mix - как запустить браузер live reload
Я использую Laravel 5.4 в своем проекте и пытаюсь настроить систему сборки интерфейса с помощью Mix. Все работает нормально, за исключением того, что я не смог получить опцию автоматической перезагрузки браузера. В документации об этом ничего нет.
кто-то пожалуйста, помогите, как я могу добиться этого?
6 ответов
Да, у меня была такая же проблема, я бы сказал, придерживаться эликсира, потому что, если вы посмотрите на github его полный беспорядок. Есть проблемы с загрузкой шрифтов из bootstrap, проблемы с объединением потоков методов, слишком много проблем, чтобы даже вдаваться в детали. Это просто слишком ново, и они не исправили все проблемы.
мои 2 цента на это, если вы собираетесь перейти на что-то новое, по крайней мере, убедитесь, что все, что работало на эликсире, находится на миксе.
важное обновление!
забудьте о том, что я сказал раньше, теперь laravel mix обновляется и с некоторыми улучшениями в функциональности и документации.
теперь вы можете просто:
mix.browserSync('my-domain.dev');
// Or:
mix.browserSync({
proxy: 'my-domain.dev'
})
а то npm run watch
и вы хорошо идти!
если вы хотите обновить версию webpack, измените версию на пакете.json to*:
"laravel-mix": "*",
и работать npm update laravel-mix
.
пожалуйста, проверьте обновленный микс документация на github
важное обновление end
согласно документации, вам просто нужно запустить npm run hot
в вашем проекте и в вашем скрипте или справочнике по стилю используйте:
<link rel="stylesheet" href="{{ mix('css/app.css') }}">
так mix()
функция укажет url ваших активов на http://localhost:8080/
.
buuuuuuuut... Это именно то, что говорится в документации, как вы можете видеть здесь. Я не могу заставить его работать на новой установке laravel запуск arch linux, все компилируется как должно и
вы все еще можете использовать browser-sync
.
Laravel 5.4 поставляется с webpack и есть плагин для него:browser-sync-webpack-plugin
.
-
установить
browser-sync
'ы материал:npm install --save-dev browser-sync browser-sync-webpack-plugin
добавить
webpack.mix.js
:
const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
mix.webpackConfig({
plugins: [
new BrowserSyncPlugin({
files: [
'app/**/*',
'public/**/*',
'resources/views/**/*',
'routes/**/*'
]
})
]
});
-
добавить этот фрагмент в нижней части страницы, прямо перед
</body>
:@if (getenv('APP_ENV') === 'local') <script id="__bs_script__">//<![CDATA[ document.write("<script async src='http://HOST:3000/browser-sync/browser-sync-client.js?v=2.18.6'><\/script>".replace("HOST", location.hostname)); //]]> </script> @endif
-
начните оба, Laravel и webpack-dev-server:
php artisan serve & npm run watch
для моих проектов я делаю следующий:
1) Установите расширение браузера chrome Livereload https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei
2) Установите livereload глобально (через CLI):
npm install -g livereload
или локально в папке проекта (через CLI):
npm install livereload
3) поставить этот фрагмент в свой макет.лезвие.в PHP или другой шаблон:
<script>
document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] +
':35729/livereload.js?snipver=1"></' + 'script>')
</script>
4) запустите livereload в вас папка проекта (через CLI):
livereload
5) Нажмите кнопку livereload в браузере Chrome
вот именно!
вот как я сделал работу печени Webpack в Laravel >=5.4 и Laravel.mix https://komelin.com/articles/configuring-webpack-livereload-laravelmix
если кому-то нужен альтернативный способ заставить его работать, например, если mix не используется на бэкэнде, вот как я его решил:
редактировать сервер.в PHP из корневого каталога проекта и заменить return false;
:
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
return false;
}
следующим образом:
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
// set log file for debugging purposes if needed
#ini_set('error_log', __DIR__ . '/storage/logs/laravel.log');
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://localhost:8080" . $uri);
exit();
}
конечно, вам нужно начать оба artisan serve
и npm run hot