我正在尝试使用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
使用网址http://localhost:3000自动启动浏览器,但不会加载任何内容。
我认为问题与这一行有关: [BS]代理:http://homestead.app
答案 0 :(得分:3)
如果您使用BrowserSyncs服务器,则可以。
mix.browserSync({
proxy: false,
server: {
baseDir: './'
}
});
答案 1 :(得分:2)
直接回答您的问题 - 无法代理.browserSync
。长边回答 - 你仍然可以在browserSync
中使用elixir的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 UI和刷新页面的所有调用。
注意:如果没有artisan serve
,我就无法连接到--host=0.0.0.0
。
对于那些想通过gulp
获得全自动解决方案的人来说,这是:
使用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
。
答案 2 :(得分:1)
你在运行多个宅基地吗?如果您不包含代理设置,它看起来默认通过homestead.app进行代理。如果你没有在homestead.app上托管你的本地,它就找不到它。
尝试
.browserSync({proxy:'domain.app'});
domain.app就是您为该网站提供服务的地方。
答案 3 :(得分:0)
我在Bloracity的laracast上找到了其他解决方案,它就像魅力一样对我有用!
$ php artisan serve --host=0
然后在你的gulp添加:
mix.browserSync({proxy: 'localhost:8000'});