-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
69 lines (62 loc) · 1.95 KB
/
build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
'use strict';
const path = require('path');
const process = require('process');
const webpack = require('webpack');
const ProgressPlugin = require('webpack/lib/ProgressPlugin');
const ProgressBar = require('progress');
const webpackProgress = new ProgressBar(
'[:bar] :percent eta :etas :msg', {
total: 100, complete: '=', incomplete: ' ', width: 10
}
);
const webpackConfig = (function getWebpackConfig(action) {
switch (action) {
case 'production':
return require('./webpack.config.production.js');
case 'live':
return require('./webpack.config.live.js');
default:
return require('./webpack.config.js');
}
}(process.argv[2]));
webpackConfig.plugins.push(new ProgressPlugin((percent, msg) => {
webpackProgress.update(percent, { 'msg': msg });
}));
const webpackCompiler = webpack(webpackConfig);
const webpackBuildFinished = (err, stats) => {
if (err) {
console.log('\n\n===== WEBPACK BUILD FAILED =====');
throw err;
} else {
console.log('\n\n===== WEBPACK BUILD FINISHED =====');
console.log(stats.toString({
colors: true,
timings: true,
cached: false
}));
}
};
switch (process.argv[2]) {
case 'watch':
webpackCompiler.watch({}, webpackBuildFinished);
return;
case 'live': {
const webpackDevServer = require('webpack-dev-server');
const server = new webpackDevServer({
hot: true,
historyApiFallback: true,
static: [{
directory: path.join(__dirname, 'dist')
}, {
directory: path.join(__dirname, 'public')
}],
devMiddleware: {
stats: { colors: true, timings: true, cached: false }
}
}, webpackCompiler);
server.start(8080, 'localhost');
return;
}
default:
webpackCompiler.run(webpackBuildFinished);
}