2015-10-24 13 views
15

Gulp + live ricarica serve i miei contenuti su localhost e (ecco cosa sto cercando) avvia automaticamente il browser sull'url del server ogni volta che eseguo il comando gulp (cioè non devo fare clic sull'icona del browser e accedere manualmente all'URL). Questo può essere fatto anche nel Webpack?Webpack lancia automaticamente il browser

Ho provato un plug-in chiamato open-browser-webpack-plugin, ma non ho potuto farlo funzionare.

risposta

1

Ive ha avuto successo utilizzando BrowserSync con Webpack.

In webpack.config.js includo questo:

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

Grazie mille per la risposta @thimthez, tuttavia BrowserSync si presenta come una grande macchina piuttosto di prendere in per gestire una cosa così piccola. Forse è incluso il lancio automatico del browser, ma anche cose come "Interaction sync", "UI o CLI control" e "URL History" (secondo la loro homepage). Per chiarire: il caricamento a caldo non è il problema qui, basta aprire il browser automaticamente e navigare verso un URL specificato quando si esegue il comando "webpack". Grazie per avermi aiutato a chiarire la domanda! – swelet

4

Poiché la maggior parte di noi stanno usando nodo (e NPM) in questi giorni: mettere il comando nello script di avvio NPM:

MAC

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

WINDOWS

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

Grazie a Enzo Ferey per aver sottolineato che ha bisogno di apparire diverso quando su Windows.

+0

Il problema è che non si tiene conto della configurazione del pacchetto web. Hai hardcoded 'http: // localhost: 8080 /' URL e non è sempre il caso. Ma come soluzione alternativa potrebbe funzionare. – WhiteAngel

+0

Questo è quello che faccio, ma trovo che devo pkill il server se I Ctrl-C per uscire da esso. In qualche modo intorno a questo? –

+0

@DanNguyen sì anche a me. Il problema tuttavia non si riferisce a questo particolare modo di avviare l'app, è legato a webpack-dev-server in generale. – swelet

3

In a previous comment, ho notato che la risposta attualmente accettata funziona ma ha l'effetto collaterale di generare un processo che deve essere ucciso manualmente. Da allora ho capito il modo più canonico di avviare un'azione aperta del browser senza utilizzare un plug-in webpack separato.

Detto questo, si ha bisogno di installare un pacchetto NPM più generale: open

quindi creare un nuovo file alla cartella di progetto denominato server.js. Ecco un esempio di implementazione (si noti che è in 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); 
}); 

Si noti che questa linea:

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

- significa che è possibile rimuovere la chiamata a webpack-dev-server/client?... da webpack.config.js, come questo comando unshift sarà inserisci la linea in config.entry ... questa è una utile modularizzazione per quando devi configurare un'app con più ambienti e diversi punti di ingresso.

Infine, nel package.json, questo è ciò che il comando start dovrebbe assomigliare: una chiamata a node per eseguire server.js:

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

emelet risposta non è falsa a tutti, tuttavia non funzionerà in Windows . Lo faccio con:

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

100% di lavoro e non è necessario installare alcun modulo o plug-in.

+0

Grazie per aver segnalato questo! – swelet

Problemi correlati