2016-01-21 34 views
7

Ho un sito Web che ho creato con Node. Posso avviare ed eseguire correttamente il sito eseguendo node server.js dalla riga di comando. Quindi accedo al sito visitando "http://localhost:3000" nel mio browser. Ora sto cercando di migliorare parte del processo di creazione che circonda il sito. Per farlo, mi affido a Gulp.Gulp con live-ricarica

Desidero ricaricare automaticamente la pagina Web quando viene apportata una modifica ai file HTML o CSS. Mi sono imbattuto nel plugin gulp-livereload. L'ho installato come descritto nei documenti. Tuttavia, durante la mia visita "http://localhost:35729/" nel browser, ho solo vedere il seguente:

{ 
    minilr: "Welcome", 
    version: "0.1.8" 
} 

mio compito sorso è configurato in questo modo:

gulp.task('launch', function() { 
    var toWatch = [ 
     'src/**/*.html', 
     'src/**/*.css' 
    ]; 

    livereload.listen(); 
    gulp.watch(toWatch, function() { 
     console.log('reloading...'); 
     livereload(); 
    }) 
} 

non vedo la mia home page come faccio io quando visito "http://localhost:3000" dopo aver eseguito node server.js. Cosa mi manca?

+0

Livereload richiede un plugin per lavorare, un'altra opzione è browsersync e ha altre funzioni interessanti come la sincronizzazione tra diversi dispositivi. Se vuoi, posso aiutarti con un compito ingannevole che lo usa. –

risposta

3

Perché stai visitando 'http://localhost:35729/'? Se questa è la porta in cui il livereload è in ascolto, allora non mostrerà il tuo sito, perché come hai detto il tuo sito è disponibile da 'http://localhost:3000'.

Suppongo che tu abbia configurato correttamente gulp. Con essa voglio dire che livereload è in ascolto, e si guarda i cambiamenti nei file e nelle tubazioni si deve '.pipe (livereload()'.

  1. è necessario installare https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei
  2. si deve eseguire la vostra applicazione 'http://localhost:3000' nel browser Chrome.
  3. si avrà nella barra di plugin per il browser nuova icona (questo è l'icona di questo plugin)
  4. è necessario fare clic su questa icona per eseguire questo plugin
  5. finire

Ora quando cambi qualcosa nei file, gulp watcher lo noterà, lavorerà e informerà il plugin di Chrome che ci sono cambiamenti, Questo plugin aggiornerà la pagina del tuo progetto.

+0

Il motivo per cui sto visitando http: // localhost: 35729 è perché questa è la porta predefinita per livereload (https://www.npmjs.com/package/livereload). Stavo cercando di implementarlo in modo tale che * non * devo installare il plug-in del browser. Volevo assicurarmi che funzionasse anche con Firefox e Safari. –

+0

Ho anche aggiunto il mio compito di gulp. Non funziona ancora. Non sono sicuro del perché. –

+0

Non ho esperienza nel trattamento manuale del fegato, mi dispiace. Ma non inizierà a funzionare solo se apri la porta livereload nel browser. Se è necessario implementarlo manualmente, probabilmente l'app dovrebbe ascoltare questa porta e in alcune condizioni attivare il ricaricamento. Il caricamento del fegato solo per i tuoi scopi di sviluppo non per i tuoi clienti, quindi non deve essere crossbrowser. Controlla questa pagina: http://livereload.com/extensions/ ci sono più browser supportati –

5

Il live reload è un protocollo per inviare notifiche al browser per eseguire una ricarica. Ma hai bisogno di un plugin per il browser per ascoltare e fare il ricaricamento, sebbene sia possibile rinunciare al plugin usando un tag script.

Il plugin gulp-livereload riguarda solo l'implementazione del server livereload, è comunque necessario servire i file tramite un server http da gulp.

È possibile utilizzare un modulo Gulp che fa sia gulp-connect.

Tuttavia, a meno che non sia legato al fegato per qualche motivo, suggerisco di utilizzare browserync. Browsersync è una buona alternativa al livereload che aggiunge ad esempio la capacità di sincronizzare la visualizzazione tra i browser. Poiché inietta un tag script nel tuo html e ascolta su un socket non hai bisogno di alcun plugin per farlo funzionare. Funziona anche su dispositivi mobili.

Un'attività ingannevole per utilizzare browsersync potrebbe essere simile a questa. Non dimenticare di aggiungere browsersync al tuo pacchetto .JSON file di

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

gulp.task('serve', [] , function(cb){ 

    browserSync.init({ 
     open: true , 
     server: { 
      baseDir: "src" 
     } 
    }); 

    gulp.watch([ 
     'src/**/*' , 
    ] , ['serve:reload']); 

}); 

gulp.task('serve:reload' , [] , function(){ 
    browserSync.reload(); 
}); 
+0

C'è un modo per farlo senza il plugin del browser. È menzionato qui: https://www.npmjs.com/package/livereload#method-2-add-code-to-page. Tuttavia, non riesco a ottenere l'avvio dell'app tramite live reload. –

+0

Suppongo che stai usando gulp-livereload, a un'osservazione più ravvicinata sta usando il modulo tyny-lr npm. Questo modulo riguarda solo il server livereload ma è comunque necessario disporre di un server Web per servire i file. Esistono molti altri moduli Gulp che eseguono entrambi (serve e livereload) su https://www.npmjs.com/package/gulp-connect. Tuttavia, trovo ancora browsersync superiore a livereload e consiglio di usarlo al suo posto. –

+0

Ho scritto un server tramite express. Il server è inserito in un file chiamato server.js. Per questo motivo, non credo di aver bisogno di gulp-connect. Eppure, non sono sicuro di cosa dovrei usare. –