Я пытаюсь использовать Elixir BrowserSync, одну из новейших функций Laravel.
Я добавил его в файл gulp
elixir(function(mix) {
mix.sass('app.scss')
.browserSync();
});
когда я запускаю «gulp watch», выводится это сообщение
[20:49:20] Using gulpfile ~/Desktop/laravel/gulpfile.js
[20:49:20] Starting 'watch'...
[20:49:20] Finished 'watch' after 11 ms
[BS] Proxying: http://homestead.app
[BS] Access URLs:
----------------------------------
Local: http://localhost:3000
External: http://10.9.0.48:3000
Автоматически запускается браузер с URL HTTP: // локальный: 3000 но ничего не загружается.
Я думаю, что проблема связана с этой строкой:
[BS] Прокси: http://homestead.app
Вы управляете множеством приусадебных участков? Похоже, что по умолчанию используется прокси через hometead.app, если вы не включили настройку прокси. Если вы не разместите свой сайт на hometead.app, он не найдет его.
Пытаться
.browserSync ({proxy: ‘domain.app’});
Где domain.app — это то, чем вы обслуживаете сайт.
Вы можете, если вы используете сервер BrowserSyncs.
mix.browserSync({
proxy: false,
server: {
baseDir: './'
}
});
Прямой ответ на ваш вопрос — не возможно не прокси .browserSync
, Длинный боковой ответ — вы все еще можете использовать реализацию эликсира browserSync
в gulp
, но у вас должен быть отдельный сервер PHP для интерпретации файлов.
Редактировать: Я нашел способ не использовать прокси, предоставляя скрипт на страницах вручную (не давая никаких аргументов в .browserSync()
звони, но не помнишь где и как это сделать точно.
Причина в том, что browserSync запрашивает все данные с сервера для вас, добавляет небольшой слушатель JavaScript и отображает все остальное:
<script type='text/javascript' id="__bs_script__">//<![CDATA[document.write("<script async src='/browser-sync/browser-sync-client.2.9.11.js'><\/script>".replace("HOST", location.hostname));//]]></script>
Одним из способов является php artisan serve --host=0.0.0.0
в отдельном терминале, чтобы запустить сервер, а затем использовать .browserSync({proxy: 'localhost:8000'})
, Все работает — интерфейс BrowserSync и все вызовы для обновления страниц.
Замечания: Я не мог подключиться к artisan serve
без --host=0.0.0.0
,
Для тех, кто хочет полностью автоматизированное решение с помощью gulp
, вот:
Используйте пакеты глотка gulp-connect-php
а также laravel-elixir-browsersync2
, Первый пускает php artisan serve
а другой соединяет его с browserSync
,
Установите пакеты:
npm install laravel-elixir-browsersync2 --save-dev
npm install gulp-connect-php --save-dev
Добавьте необходимые строки в ваш gulpfile.js
:
Код:
var elixir = require('laravel-elixir'),
gulp = require('gulp');
var connectPHP = require('gulp-connect-php');
var BrowserSync = require('laravel-elixir-browsersync2');
elixir(function(mix) {
mix.sass('app.scss');
});
elixir(function(mix) {
connectPHP.server({
base: './public',
hostname: '0.0.0.0',
port: 8000
});
BrowserSync.init();
mix.BrowserSync(
{
proxy: 'localhost:8000',
logPrefix : "Laravel Eixir BrowserSync",
logConnections : false,
reloadOnRestart : false,
notify : false
});
});
gulp
,Отказ от ответственности: Это может не работать с gulp watch
, но могут быть люди с ответом на это.
Также есть линия PHP server not started. Retrying...
перед [Laravel Eixir BrowserSync] Proxying: http://localhost:8000
, Это принадлежит gulp-connect-php
при попытке проверить, работает ли сервер.
Я нашел другое решение на Laracast для Bloomanity, и оно работает со мной, как шарм!
$ php artisan serve --host=0
а затем в свой глоток добавить:
mix.browserSync({proxy: 'localhost:8000'});