1 | module.exports = function initBuilder(r, app, opts, NODE_ENV) {
|
2 | var DEVELOPMENT = NODE_ENV === 'development';
|
3 | if (!DEVELOPMENT) return;
|
4 |
|
5 | var WebpackDevServer = r('webpack-dev-server');
|
6 | var colors = require('colors');
|
7 |
|
8 | if (!WebpackDevServer) return;
|
9 |
|
10 | app.on('ready', function(httpServer) {
|
11 | var config = app.builder;
|
12 |
|
13 | var compiler = config.load();
|
14 | var WEBPACK_DEBUG = typeof process.env.WEBPACK_DEBUG !== 'undefined';
|
15 | var server = new WebpackDevServer(compiler, {
|
16 | contentBase: false,
|
17 | publicPath: '',
|
18 | hot: true,
|
19 | stats: WEBPACK_DEBUG
|
20 | });
|
21 |
|
22 | app.use('/build', 'webpack', server.app);
|
23 |
|
24 | if (!WEBPACK_DEBUG) {
|
25 | compiler.plugin('done', function(stats) {
|
26 | var warns = stats.compilation.warnings;
|
27 | if (warns.length) {
|
28 | console.log('====WARNINGS====\n'.yellow);
|
29 | warns.forEach(function(warn) {
|
30 | console.warn(((warn.module || {}).context || '').yellow + ':\n' + warn.message + '\n');
|
31 | })
|
32 | }
|
33 |
|
34 | var errs = stats.compilation.errors;
|
35 | if (errs.length) {
|
36 | console.error('====ERRORS====\n'.red);
|
37 | errs.forEach(function(err) {
|
38 | console.error((err.module || {}).context.red + ':\n' + err.stack || err.message || err);
|
39 | });
|
40 | }
|
41 | });
|
42 | }
|
43 |
|
44 | httpServer.listen = function() {}
|
45 |
|
46 | server.listeningApp = httpServer;
|
47 | server.listen();
|
48 |
|
49 | delete httpServer.listen;
|
50 |
|
51 | process.on('SIGTERM', close);
|
52 | process.on('SIGINT', close);
|
53 | function close() {
|
54 | server.close();
|
55 | }
|
56 | });
|
57 | }
|