49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
/**
|
|
* Require Browsersync along with webpack and middleware for it
|
|
*/
|
|
var browserSync = require('browser-sync').create();
|
|
var webpack = require('webpack');
|
|
var webpackDevMiddleware = require('webpack-dev-middleware');
|
|
var stripAnsi = require('strip-ansi');
|
|
|
|
/**
|
|
* Require ./webpack.config.js and make a bundler from it
|
|
*/
|
|
var webpackConfig = require('./webpack.config');
|
|
var bundler = webpack(webpackConfig);
|
|
|
|
/**
|
|
* Reload all devices when bundle is complete
|
|
* or send a fullscreen error message to the browser instead
|
|
*/
|
|
bundler.plugin('done', function (stats) {
|
|
if (stats.hasErrors() || stats.hasWarnings()) {
|
|
return browserSync.sockets.emit('fullscreen:message', {
|
|
title: "Webpack Error:",
|
|
body: stripAnsi(stats.toString()),
|
|
timeout: 100000
|
|
});
|
|
}
|
|
browserSync.reload();
|
|
});
|
|
|
|
/**
|
|
* Run Browsersync and use middleware for Hot Module Replacement
|
|
*/
|
|
browserSync.init({
|
|
server: 'app',
|
|
open: false,
|
|
logFileChanges: false,
|
|
middleware: [
|
|
webpackDevMiddleware(bundler, {
|
|
publicPath: webpackConfig.output.publicPath,
|
|
stats: {colors: true}
|
|
})
|
|
],
|
|
plugins: ['bs-fullscreen-message'],
|
|
files: [
|
|
'app/css/*.css',
|
|
'app/*.html'
|
|
]
|
|
});
|