2015-09-10 12 views
18

私たちのチームは、私たちのウェブアプリケーションを足場にするために、幽霊と麻薬発生器を使用しました。それは、私たちが望むライブリロードを処理するためにbrowsersyncを使用します。しかし、私たちは開発サーバーにデプロイしました.2人の開発者が同時にgulp serveコマンドを使用している場合、両方とも同じウィンドウが表示されます(つまり、1つのウィンドウに1つの開発者が表示され、同じように)。私はこれがBrowserSyncのクロスデバイステスト機能によるものだと考えていますが、この機能を無効にする方法については迷っています。もし誰かがこれを行う方法を知っているなら(私たちのライブリロード機能を無効にしないことが望ましい)、私に教えてください!BrowserSyncのデバイス間アクションミラーリング機能を無効にするにはどうすればよいですか? (GhostMode)

以下は、gulp-angularジェネレータに付属しているgulpフォルダにあるmy server.jsファイルのコードです。これはうまくいけば、これは一部の人に役立つはずです。自分の質問に答えるために申し訳ありません

'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, []); 
}); 

答えて

36

同じ問題が発生した場合、initオプションでゴーストモードをfalseに設定するだけで済みます。

 browserSync.instance = browserSync.init({ 
     startPath: '/', 
     ghostMode: false, 
     server: server, 
     browser: browser 
    }); 

プロジェクトを初期化するためにQuickStart seedを使用する場合にはdefault.config.js :)に

+1

感謝を!実際には、私たちが最初のソリューションを使用した場合、新しいプロジェクトごとにゴーストモードを手動で無効にする必要があることに気づいたときの解決策です。これは確かに行く方法です、ありがとう! – turner

5

、私は数日後に答えを見つけ、誰もまだこのに答えていないので、私は私が私の解決策を投稿しようと思いました。

私たちが遭遇した問題は、BrowserSyncの "GhostMode"という機能が原因で発生していると思われます。これを無効にすることはとても簡単です:あなたのBrowserSync設定ファイル(root/node_modules/browser-sync/lib/default.config.jsにあります)を探して開きます。

ghostMode: { 
    clicks: true, 
    scroll: true, 
    forms: { 
     submit: true, 
     inputs: true, 
     toggles: true 
    } 
}, 

をし、それはこれが私たちの問題を修正して、彼らは同じ問題が発生した場合うまくいけば、これは他の人を助けるghostMode: false,

言うように、それを変更:次のような何かのために、そのファイルを検索。

2

を変更する必要はありません、BrowserSyncの設定がBS-config.jsonファイルを使用して設定することができますプロジェクトのルートフォルダにあります。

私のファイルには以下が含まれています。あなたの答えのための

{ 
    "server": { 
    "baseDir": "src", 
    "routes": { 
     "/node_modules": "node_modules" 
    } 
    }, 
    "ghostMode": false 
} 
関連する問題