How to disable cross-device action mirroring functionality of BrowserSync? (GhostMode)
我们的团队将gulp-angular生成器与yeoman一起使用来构建我们的Web应用程序。它使用browsersync处理我们想要的实时重载。但是,我们刚刚部署到开发服务器,现在当两个开发人员同时使用gulp serve命令时,他们两个都显示在同一窗口中(即,一个开发人员在一个窗口中键入,它显示在另一个开发人员的窗口中)以及)。我相信这是由于BrowserSync的跨设备测试功能引起的,但是我对如何禁用此功能一无所知。如果有人知道如何执行此操作(最好不禁用我们的实时重新加载功能),请告诉我!
下面是gulp文件夹中我的server.js文件的代码,该代码与gulp-angular生成器附带的代码相同,因此希望这会对某些人有所帮助。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 'use strict'; var path = require('path'); var gulp = require('gulp'); var conf = require('./conf'); var browserSync = require('browser-sync'); var browserSyncSpa = require('browser-sync-spa'); var util = require('util'); var proxyMiddleware = require('http-proxy-middleware'); function browserSyncInit(baseDir, browser) { browser = browser === undefined ? 'default' : browser; var routes = null; if(baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) { routes = { '/bower_components': 'bower_components' }; } var server = { baseDir: baseDir, routes: routes }; /* * You can add a proxy to your backend by uncommenting the line bellow. * You just have to configure a context which will we redirected and the target url. * Example: $http.get('/users') requests will be automatically proxified. * * For more details and option, https://github.com/chimurai/http-proxy-middleware/blob/v0.0.5/README.md */ // server.middleware = proxyMiddleware('/users', {target: 'http://jsonplaceholder.typicode.com', proxyHost: 'jsonplaceholder.typicode.com'}); browserSync.instance = browserSync.init({ startPath: '/', server: server, browser: browser }); } browserSync.use(browserSyncSpa({ selector: '[ng-app]'// Only needed for angular apps })); gulp.task('serve', ['watch'], function () { browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]); }); gulp.task('serve:dist', ['build'], function () { browserSyncInit(conf.paths.dist); }); gulp.task('serve:e2e', ['inject'], function () { browserSyncInit([conf.paths.tmp + '/serve', conf.paths.src], []); }); gulp.task('serve:e2e-dist', ['build'], function () { browserSyncInit(conf.paths.dist, []); }); |
面对相同的问题,您可以简单地在init选项中将ghost模式设置为false。
1 2 3 4 5 6 | browserSync.instance = browserSync.init({ startPath: '/', ghostMode: false, server: server, browser: browser }); |
无需更改default.config.js:)
很抱歉回答我自己的问题,但是几天后我找到了答案,因为没有人回答过这个问题,所以我认为我会发布我的解决方案。
我们遇到的问题似乎是由BrowserSync中称为" GhostMode "的功能引起的,该功能可在设备之间镜像单击和滚动操作以及多个表单操作。禁用它非常简单:查找您的BrowserSync配置文件(对我而言,该文件位于root / node_modules / browser-sync / lib / default.config.js)并打开它。在该文件中搜索类似于以下内容的文件:
1 2 3 4 5 6 7 8 9 | ghostMode: { clicks: true, scroll: true, forms: { submit: true, inputs: true, toggles: true } }, |
并对其进行更改,使其显示为
这已解决了我们的问题,希望对其他遇到相同问题的人有所帮助。
如果通过命令行启动Browsersync,它将提供两个不同的地址:
选择UI /管理控件的地址
从那里您可以使用UI设置配置设置并禁用跨设备镜像
如果使用QuickStart种子初始化项目,则可以使用项目根文件夹中的bs-config.json文件配置BrowserSync的设置。
我的文件包含以下内容:
1 2 3 4 5 6 7 8 9 | { "server": { "baseDir":"src", "routes": { "/node_modules":"node_modules" } }, "ghostMode": false } |
对于JHIPSTER应用程序,只需添加
1 2 3 4 5 6 7 8 | new BrowserSyncPlugin({ ghostMode: false, host: 'localhost', port: 9000, proxy: { target: 'http://localhost:9060', ws: true } |