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",
//...
}
Jednym z problemów, który znalazłem, jest to, że zaczyna otwierać link przed ukończeniem kompilacji plików. Będzie lepiej, jeśli otworzy link, gdy wszystko będzie gotowe. – new2cpp