1 | 'use strict';
|
2 |
|
3 | var debug = require('debug');
|
4 | var notifier = require('node-notifier');
|
5 | var webpack = require('webpack');
|
6 | var WebpackDevServer = require('webpack-dev-server');
|
7 |
|
8 | module.exports = function (webpackConfig, options) {
|
9 | options = options || {};
|
10 |
|
11 | var NAME = webpackConfig.displayName;
|
12 | var PORT = webpackConfig.hotloadPort;
|
13 | var PROTOCOL = options.https ? 'https' : 'http';
|
14 | var HOST = PROTOCOL + '://localhost:' + PORT;
|
15 |
|
16 | var log = debug('webpack:dev');
|
17 | var compiler = webpack(webpackConfig);
|
18 |
|
19 | compiler.plugin('done', function (stats) {
|
20 | var errors = stats.compilation.errors;
|
21 | errors.length && errors.forEach(function (error) {
|
22 | console.log(error.message);
|
23 |
|
24 | try {
|
25 | notifier.notify({
|
26 | title: NAME + ' ' + error.module.rawRequest,
|
27 | message: error.error.message.split(': ').join('\n')
|
28 | })
|
29 | } catch (e) { console.log(e.message) }
|
30 | });
|
31 | });
|
32 |
|
33 | var server = new WebpackDevServer(compiler, {
|
34 | contentBase: HOST,
|
35 | headers: { 'Access-Control-Allow-Origin': '*' },
|
36 | hot: true,
|
37 | https: !!options.https,
|
38 | noInfo: true,
|
39 | publicPath: webpackConfig.output.publicPath,
|
40 | quiet: true
|
41 | });
|
42 |
|
43 | log('Starting');
|
44 |
|
45 | server.listen(PORT, 'localhost', function (err, result) {
|
46 | if (err) {
|
47 | log('Error:', err);
|
48 | }
|
49 |
|
50 | log('Listening at ' + HOST);
|
51 | });
|
52 | }
|
53 |
|