2015-06-10 11 views
8

Sto usando browsersync + gulp con alcuni fantastici plugin per browser, perfectPixel per nominarne uno. Il mio problema è che ogni volta che salvi il mio lavoro, costringe il browser a ricaricare, cancellando il browser e chiudendo l'estensione del browser. Questo mi porta a dover riattivare il plugin e continuare questo flusso di lavoro inefficiente. Qualcuno ha qualche idea?Can browsersync può iniettare contenuto aggiornato nel browser senza un aggiornamento?

UPDATE 2015/07/07 Sotto Matteo, ha fornito alcuni link ad una soluzione che incorpora WebSockets, però non riesco a farlo funzionare con il mio sorso di set-up.

var gulp = require('gulp'), 
    open = require('gulp-open'), 
    browserSync = require('browser-sync').create(); 

var WebSocketServer, socket, wss; 

WebSocketServer = require('ws').Server; 

wss = new WebSocketServer({ 
    port: 9191 
}); 

var reload = browserSync.reload; 

var paths = { 
    css: 'app/REPSuite/web/static/css/*.css', 
    js: 'app/REPSuite/web/static/js/*.js', 
    html: 'app/*.html' 
}; 

gulp.task('reload', function() { 
    var client, i, len, ref, results; 
    ref = wss.clients; 
    results = []; 
    for (i = 0, len = ref.length; i < len; i++) { 
     client = ref[i]; 
     results.push(client.send('reload')); 
    } 
    return results; 
}); 

socket = null; 

this.reloadClient = { 
    connect: function() { 
     socket = new WebSocket('wss://localhost:9191'); 
     socket.onopen = function() { 
      return console.log('connected'); 
     }; 
     socket.onclose = function() { 
      return console.log('closed'); 
     }; 
     return socket.onmessage = function(message) { 
      if (message.data === "reload") { 
       return window.chrome.runtime.reload(); 
      } 
     }; 
    }, 
    disconnect: function() { 
     return socket.close(); 
    } 
}; 

// Static Server + watching scss/html files 
gulp.task('serve', ['css'], function() { 

    browserSync.init({ 
     server: "./app", 
     files: [paths.html, paths.css, paths.js] 
    }); 

    gulp.watch(paths.css, ['css']); 
    gulp.watch(paths.html).on('change', browserSync.reload); 
}); 

// Compile sass into CSS & auto-inject into browsers 
gulp.task('css', function() { 
    return gulp.src(paths.css) 
     .pipe(browserSync.stream()); 
}); 

gulp.task('default', ['serve','reload']); 
+0

ho trovato questo: https://www.npmjs.com/package/bs-html-injector – Ryuk87

risposta

2

Browser-sync non posso fare che in modo nativo da quando le estensioni sono progettate per impostazione predefinita per l'esecuzione in proprio sandbox.

è necessario scrivere qualcosa di personalizzato con WebSockets per aggirare questo, non mi sono preoccupato perchè ho bisogno di un quickfix così ho finito per usare questo:

https://chrome.google.com/webstore/detail/extensions-reloader/fimgfedafeadlieiabdeeaodndnlbhid

ma questo dovrebbe aiutare:

http://blog.waymondo.com/2014-09-16-live-reloading-chrome-apps-and-extensions-with-gulp-and-websockets/

+0

Ciao Matteo, Innanzitutto grazie per le risorse! Ci scusiamo per il ritardo, ma alla fine ho avuto l'opportunità di hackerarmi con il link "waymondo" che hai elencato, ma non ho potuto farlo funzionare. Non ricevo errori; Penso che il mio problema potrebbe essere il server 'browserSync' corre contro la versione' websocket'? –

+0

crea una domanda separata se hai problemi di risoluzione dei problemi e link tramite commento qui, lo terrò d'occhio. –

Problemi correlati