-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathindex.js
101 lines (98 loc) · 3.02 KB
/
index.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// include
const webpack = require('webpack');
const connect = require('electron-connect');
// check arguments and import webpack config
let mode = null;
let config = null;
switch(process.argv[2]){
case '-p':
case '--production':
mode = 'production';
config = require('./webpack.config.production.js');
break;
case '-d':
case '--development':
default:
mode = 'development';
config = require('./webpack.config.development.js');
}
console.log(`[OK] ${mode} mode`);
// run and watch webpack
let compiler = webpack(config);
let server = connect.server;
let serverProcess = null;
if(mode === 'development'){
// watch webpack
compiler.watch({}, (err, stats) => {
let json = stats.toJson();
if(err != null){
console.log('[ERR] webpack stats has error in callback');
console.error(err);
return;
}
if(stats.hasErrors() === true){
console.log('[ERR] webpack stats hasErrors');
json.errors.map((v) => {
console.log(v);
});
return
}
if(stats.hasWarnings() === true){
console.log('[WARNING] webpack stats hasWarnings');
json.warnings.map((v) => {
console.log(v);
});
}
// exec electron
if(serverProcess == null){
// first time
serverProcess = server.create();
serverProcess.start();
serverProcess.on('quit', () => {
process.exit(0);
});
console.log('[OK] complete webpack, and start electron server process');
}else{
// is started
let isRestart = false;
json.modules.map((v) => {
if(v.hasOwnProperty('built') === true && v.built === true){
isRestart = isRestart || v.id.includes('main.js') === true;
}
});
if(isRestart === true){
// change on server js
console.log('[OK] restart electron server process');
serverProcess.restart();
}else{
// change on client js
console.log('[OK] reload electron render process');
serverProcess.reload();
}
}
});
}else{
// build webpack
compiler.run((err, stats) => {
let json = stats.toJson();
if(err != null){
console.log('[ERR] webpack stats has error in callback');
console.error(err);
return;
}
if(stats.hasErrors() === true){
console.log('[ERR] webpack stats hasErrors');
json.errors.map((v) => {
console.log(v);
});
return
}
if(stats.hasWarnings() === true){
console.log('[WARNING] webpack stats hasWarnings');
json.warnings.map((v) => {
console.log(v);
});
}
console.log('[OK] complete webpack');
});
}