In a previous comment, я отметил, что принятый в настоящее время ответ действительно работает, но имеет побочный эффект от нереста процесса, который необходимо убить вручную. С тех пор я понял, что более канонический способ инициировать открытое действие браузера без использования отдельного плагина webpack.
Тем не менее, вам необходимо установить более общий пакет NPM: open
Затем создайте новый файл в папку проекта под названием server.js
. Вот пример реализации (обратите внимание, что в 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);
});
Обратите внимание, что эта строка:
config.entry.unshift("webpack-dev-server/client?" + target_entry);
- означает, что вы можете удалить вызов webpack-dev-server/client?...
из webpack.config.js
, так как это unshift
команда вставьте строку в config.entry
... это полезная модуляция, когда вам нужно настроить приложение с несколькими средами и разными точками входа.
Наконец, в package.json
, это то, что команда start
должна выглядеть следующим образом: вызов node
запустить server.js
:
"scripts": {
"start": "node server.js",
//...
}
Одна проблема, которую я нашел, это открытие ссылки, прежде чем сборка файлов будет завершена. Будет лучше, если он откроет ссылку, когда все будет готово. – new2cpp