You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
/** |
|
* 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' |
|
] |
|
});
|
|
|