2015-10-24 5 views
15

Gulp + live reload serviert meine Inhalte auf localhost und (hier ist, was ich danach bin) startet den Browser automatisch auf der Server-URL, wenn ich den Schluck Befehl ausführen (dh ich muss nicht Klicken Sie auf das Browser-Symbol und navigieren Sie manuell zur URL. Kann dies auch in Webpack gemacht werden?Webpack Start-Browser automatisch

Ich habe ein Plugin namens Open-Browser-Webpack-Plugin versucht, aber ich konnte es nicht zum Laufen bringen.

Antwort

1

Ive hatte Erfolg mit BrowserSync mit Webpack.

In webpack.config.js I sind dies:

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

Dank einem Haufen für Ihre Antwort @thimthez jedoch BrowserSync sieht aus wie eine ziemlich große Maschine nehmen in eine so kleine Sache zu handhaben. Vielleicht ist das automatische Starten des Browsers enthalten, aber auch Dinge wie "Interaktions-Synchronisation", "UI- oder CLI-Kontrolle" und "URL-Verlauf" (entsprechend ihrer Homepage). Zur Verdeutlichung: Hot Loading ist hier nicht das Problem, einfach den Browser automatisch öffnen und zu einer bestimmten URL navigieren, wenn der Befehl "webpack" ausgeführt wird. Danke, dass du mir geholfen hast, die Frage zu klären! – swelet

4

Da die meisten von uns sind mit Knoten (und NPM) in diesen Tagen: setzen Sie den Befehl im npm Startskript:

MAC

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

WINDOWS

Danke an Enzo Ferey für den Hinweis, dass es unter Windows anders aussehen muss.

+0

Das Problem ist, dass Sie die Webpack-Konfiguration nicht berücksichtigen. Sie haben 'http: // localhost: 8080 /' URL fest programmiert, und das ist nicht immer der Fall. Aber als Workaround könnte es funktionieren. – WhiteAngel

+0

Das ist was ich tue, aber ich finde, dass ich den Server pkill, wenn ich Ctrl-C ausbrechen muss. Irgendwie in der Nähe? –

+0

@DanNguyen Ja ich auch. Das Problem bezieht sich jedoch nicht auf diese spezielle Art des Startens der App, sondern auf Webpack-Dev-Server im Allgemeinen. – swelet

3

In a previous comment, habe ich festgestellt, dass die derzeit akzeptierte Antwort funktioniert, aber es hat die Nebenwirkung, einen Prozess zu erzeugen, der manuell getötet werden muss. Ich habe seitdem die kanonischere Art herausgefunden, eine Browser-Open-Action zu initiieren, ohne ein separates Webpack-Plugin zu verwenden.

Das heißt, Sie brauchen eine allgemeinere npm Paket zu installieren: open

Dann erstellen Sie eine neue Datei in Ihrem Projektordner server.js benannt. Hier ist eine Beispielimplementierung (beachten Sie, dass es in ES6 ist):

'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); 
}); 

Beachten Sie, dass diese Zeile:

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

- Bedeutet, können Sie den Anruf zu webpack-dev-server/client?... von webpack.config.js, wie dieser unshift Befehl entfernen wird Fügen Sie die Zeile in config.entry ... Dies ist eine hilfreiche Modularisierung für, wenn Sie eine App mit mehreren Umgebungen und verschiedenen Einstiegspunkten einrichten müssen.

schließlich in package.json, ist es das, was der start Befehl soll wie folgt aussehen: ein Aufruf an node läuft server.js:

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

Emelet Antwort ist nicht falsch überhaupt, aber es wird nicht in Windows arbeiten . Ich mache das mit:

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

100% funktioniert und Sie müssen kein Modul oder Plugin installieren.

+0

Vielen Dank, dass Sie darauf hingewiesen haben! – swelet

Verwandte Themen