2016-01-21 24 views
7

Mam stronę internetową, którą zbudowałem z węzłem. Mogę z powodzeniem uruchomić i uruchomić witrynę, uruchamiając node server.js z wiersza polecenia. Następnie wchodzę na stronę, odwiedzając "http://localhost:3000" w mojej przeglądarce. Próbuję teraz poprawić niektóre procesy kompilacji otaczające witrynę. Aby to zrobić, polegam na Gulpie.Gulp z live-reload

Chcę automatycznie ponownie załadować stronę po wprowadzeniu zmiany w pliku HTML lub CSS. Natknąłem się na wtyczkę gulp-livereload. Zainstalowałem go zgodnie z opisem w dokumentacji. Jednak, kiedy odwiedzam „http://localhost:35729/” w przeglądarce, po prostu zobaczyć, co następuje:

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

Moim zadaniem łyk jest skonfigurowany tak:

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

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

nie widzę moją stronę domu tak jak ja kiedy odwiedzam "http://localhost:3000" po uruchomieniu node server.js. czego mi brakuje?

+0

Livereload wymaga wtyczki do pracy, innym rozwiązaniem jest browsersync i ma inne fajne funkcje jak synchronizacja pomiędzy kilkoma urządzeniami. Jeśli chcesz, mogę ci pomóc z zadaniem, które go wykorzystuje. –

Odpowiedz

3

Dlaczego odwiedzasz "http://localhost:35729/"? Jeśli jest to port, w którym nasłuchuje livereload, to nie wyświetli Twojej witryny, ponieważ, jak powiedziałeś, twoja strona jest dostępna z 'http://localhost:3000'.

Zakładam, że poprawnie skonfigurowałeś łyk. Przez to mam na myśli, że livereload jest słuchanie i oglądanie zmian w plikach i rur masz „.pipe (livereload()”.

  1. Musisz zainstalować https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei
  2. trzeba uruchomić aplikację „http://localhost:3000” w przeglądarce chrome.
  3. trzeba będzie w barze wtyczki do przeglądarki nową ikonę (jest ikoną tej wtyczki)
  4. trzeba kliknąć tę ikonę, aby uruchomić tę wtyczkę
  5. zakończyć

Teraz, gdy zmienisz coś w plikach, obserwator łyk zauważy to, wykona trochę pracy i poinformuje wtyczkę chrome, że są zmiany, Ta wtyczka odświeży twoją stronę projektu.

+0

Powodem odwiedzania http: // localhost: 35729 jest to, że jest to domyślny port dla livereload (https://www.npmjs.com/package/livereload). Próbowałem to zaimplementować, więc nie * musiałem * instalować wtyczkę przeglądarki. Chciałem sprawdzić, czy to działa również w Firefoksie i Safari. –

+0

Dodałem także moje zadanie z gulpem. Nadal nie działa. Nie jestem pewien dlaczego. –

+0

Nie mam doświadczenia w ręcznym obsługiwaniu livereload, przepraszam. Ale nie zacznie działać, jeśli otworzysz port livereload w przeglądarce. Jeśli potrzebujesz ręcznie zaimplementować to prawdopodobnie Twoja aplikacja powinna odsłuchać ten port i w niektórych warunkach przeładować wyzwalacz. Livereloading to tylko dla twoich rozwijających się celów nie dla twoich klientów, dlatego nie musi być crossbrowser. Sprawdź tę stronę: http://livereload.com/extensions/ jest więcej obsługiwanych przeglądarek –

5

Przeładowanie na żywo to protokół do wysyłania powiadomień do przeglądarki w celu ponownego załadowania. Ale potrzebujesz wtyczki do przeglądarki, aby nasłuchiwać i przeładować, chociaż można zrezygnować z wtyczki za pomocą znacznika skryptu.

Wtyczka gulp-livereload zajmuje się tylko implementacją serwera livereload, ale musisz nadal obsługiwać pliki przez serwer HTTP z wtyczką.

Możesz użyć modułu do chodzenia, który obsługuje zarówno gulp-connect.

Jednak jeśli nie jesteś przywiązany do livereload z jakiegoś powodu, sugeruję użycie browserync. Browsersync to dobra alternatywa dla livereload, która dodaje automatycznie możliwość synchronizowania widoku między przeglądarkami. Ponieważ wstrzykuje znacznik skryptu do twojego html i nasłuchuje na gnieździe, nie potrzebujesz żadnych wtyczek, żeby to działało. Działa nawet na urządzeniach mobilnych.

Może to wyglądać tak, jak w przypadku przeglądarki browsersync. Nie zapomnij dodać browsersync do swojego pakietu .json plik

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

Jest sposób na zrobienie tego bez wtyczki przeglądarki. Jest wspomniany tutaj: https://www.npmjs.com/package/livereload#method-2-add-code-to-page. Jednak wydaje mi się, że nie mogę uruchomić aplikacji za pomocą przeładowania na żywo. –

+0

Zakładam, że używasz gulp-livereload, po bliższej inspekcji używa się modułu tyny-lr npm. Ten moduł dotyczy tylko serwera livereload, ale nadal potrzebujesz serwera WWW do obsługi plików. Na przykład kilka innych modułów językowych, które wykonują oba (serwis i livereload) to https://www.npmjs.com/package/gulp-connect. Jednak nadal znajduję browsersync lepszy od livereload i polecam go zamiast tego. –

+0

Napisałem serwer za pośrednictwem ekspresu. Serwer znajduje się w pliku o nazwie server.js. Z tego powodu nie uważam, żebym potrzebowała gulp-connect. Jednak nie jestem pewien, co powinienem użyć. –

Powiązane problemy