-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.js
69 lines (61 loc) · 1.9 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
'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 action = process.argv[2];
const port = process.argv[3] || 8080;
const webpackCompiler = webpack(function getWebpackConfig(act) {
switch (act) {
case 'production':
return require('./webpack.config.production.js');
case 'live':
return require('./webpack.config.live.js');
default:
return require('./webpack.config.js');
}
}(action));
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
}));
}
};
const webpackProgress = new ProgressBar(
'[:bar] :percent eta :etas :msg', {
total: 100, complete: '=', incomplete: ' ', width: 10
}
);
webpackCompiler.apply(new ProgressPlugin((percent, msg) => {
webpackProgress.update(percent, { 'msg': msg });
}));
switch (action) {
case 'watch':
webpackCompiler.watch({}, webpackBuildFinished);
return;
case 'live': {
const webpackDevServer = require('webpack-dev-server');
const server = new webpackDevServer(webpackCompiler, {
contentBase: [
path.join(__dirname, 'dist'),
path.join(__dirname, 'public')
],
hot: true,
compress: true,
historyApiFallback: true,
stats: { colors: true, timings: true, cached: false }
});
server.listen(port, 'localhost');
return;
}
default:
webpackCompiler.run(webpackBuildFinished);
}