2015-10-24 22 views
15

Gulp + live reload wyświetla moją zawartość na localhost i (tutaj jest to, czego szukam) uruchamia przeglądarkę automatycznie pod adresem URL serwera za każdym razem, gdy uruchomię polecenie gulp (tzn. Nie muszę kliknij ikonę przeglądarki i przejdź do adresu URL ręcznie). Czy można to zrobić również w pakiecie Webpack?Automatyczna aktualizacja przeglądarki Webpack

Próbowałem wtyczki o nazwie open-browser-webpack-plugin, ale nie mogłem jej uruchomić.

Odpowiedz

1

Ive miał sukces przy użyciu BrowserSync z plecakiem.

W webpack.config.js I to w ten sposób:

var options = { 
    port: 9001, 
    host: 'localhost', 
    server: { 
     baseDir: './public' 
    }, 
    ui: { 
     port: 9002 
    }, 
    startPath: process.argv[3].substr(2), 
} 

var browserSync = require('browser-sync'); 
browserSync(['public/**/*.*'],options); 
+3

Dzięki kilka za odpowiedź @thimthez jednak BrowserSync wygląda dość duża maszyna do podjęcia w obsłużyć taką małą rzecz. Możliwe, że włączono automatyczne uruchamianie przeglądarki, ale są też takie rzeczy jak "Synchronizacja interakcji", "Kontrola interfejsu użytkownika lub interfejsu CLI" i "Historia URL" (zgodnie z ich stroną domową). W celu wyjaśnienia: Ładowanie w trybie Hot-Hot nie jest tutaj problemem, wystarczy automatycznie otworzyć przeglądarkę i przejść do określonego adresu URL podczas uruchamiania polecenia "webpack". Dziękuję za pomoc w wyjaśnieniu pytania! – swelet

4

Ponieważ większość z nas korzysta węzeł (i npm) w tych dniach: umieścić polecenia w skrypcie startowym npm:

MAC

"scripts": { 
    "start": "webpack-dev-server & open http://localhost:8080/" 
    } 

WINDOWS

"scripts": { 
    "start": "start http://localhost:8000/ & webpack-dev-server" 
} 

Podziękowania dla Enzo Ferey za wskazanie, że musi wyglądać inaczej w systemie Windows.

+0

Problem polega na tym, że nie bierzesz pod uwagę konfiguracji webpack. Naprawiono adres URL http: // localhost: 8080/'i nie zawsze tak jest. Ale jako obejście problemu może działać. – WhiteAngel

+0

To jest to, co robię, ale uważam, że muszę pkill serwera, jeśli Ctrl-C, aby się z niego wyrwać. Jakikolwiek sposób obejścia tego? –

+0

@DanNguyen yeah ja też. Problem jednak nie dotyczy tego konkretnego sposobu uruchamiania aplikacji, jest to ogólnie związane z webpack-dev-server. – swelet

3

In a previous comment, Zauważyłem, że aktualnie zaakceptowana odpowiedź działa, ale ma efekt uboczny odrodzenia procesu, który musi zostać ręcznie zabity. Od tego czasu wymyśliłem bardziej kanoniczny sposób inicjowania otwartej akcji przeglądarki bez używania osobnej wtyczki do przeglądarki internetowej.

Powiedział, że trzeba zrobić, aby zainstalować pakiet npm bardziej ogólny: open

następnie utworzyć nowy plik w folderze projektu o nazwie server.js. Oto realizacja próbka (należy pamiętać, że jest w ES6):

'use strict'; 
const webpack = require('webpack'); 
const WebpackDevServer = require('webpack-dev-server'); 
const config = require('./webpack.config'); 


const open = require('open'); 
const port_number = 8080; 

let target_entry = 'http://localhost:' + port_number + '/'; 
config.entry.unshift("webpack-dev-server/client?" + target_entry); 

new WebpackDevServer(webpack(config), {contentBase: 'src', hot: true, stats: { colors: true }, publicPath: '/assets/'}) 
.listen(port_number, 'localhost' , (err) => { 
    if (err) { 
    console.log(err); 
    } 
    console.log('Listening at localhost:' + port_number); 
    console.log('Opening your system browser...'); 
    open(target_entry); 
}); 

Zauważ, że ta linia:

config.entry.unshift("webpack-dev-server/client?" + target_entry); 

- oznacza, że ​​można usunąć wywołanie webpack-dev-server/client?... z webpack.config.js, jak tego polecenia unshift będzie wstaw linię do config.entry ... jest to przydatna modularyzacja, gdy musisz skonfigurować aplikację z wieloma środowiskami i różnymi punktami wejścia.

Wreszcie w package.json, to co komenda start powinna wyglądać następująco: wezwanie do node uruchomić server.js:

"scripts": { 
    "start": "node server.js", 
    //... 
    } 
7

Emelet odpowiedź nie jest fałszywy w ogóle, ale to nie będzie działać w systemie Windows . Robię to z:

"scripts": { 
    "start": "start http://localhost:8000/ & webpack-dev-server" 
} 

100% pracy i nie trzeba instalować żadnego modułu lub wtyczki.

+0

Dzięki za wskazanie tego! – swelet

Powiązane problemy