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
|
const nodemon = require('nodemon');
const DEV_SERVER_HOST = process.env.DEV_SERVER_HOST || 'localhost';
const DEV_SERVER_PORT = process.env.DEV_SERVER_PORT || '3808';
const STATIC_MODE = process.env.DEV_SERVER_STATIC && process.env.DEV_SERVER_STATIC !== 'false';
const DLL_MODE = process.env.WEBPACK_VENDOR_DLL && process.env.WEBPACK_VENDOR_DLL !== 'false';
const baseConfig = {
ignoreRoot: ['.git', 'node_modules/*/'],
noUpdateNotifier: true,
signal: 'SIGTERM',
delay: 1000,
};
// run webpack in compile-once mode and watch for changes
if (STATIC_MODE) {
nodemon({
exec: `rm -rf public/assets/webpack ; yarn run webpack && exec ruby -run -e httpd public/ -p ${DEV_SERVER_PORT}`,
watch: [
'config/webpack.config.js',
'app/assets/javascripts',
'ee/app/assets/javascripts',
// ensure we refresh when running yarn install
'node_modules/.yarn-integrity',
],
ext: 'js,json,vue',
...baseConfig,
});
}
// run webpack through webpack-dev-server, optionally compiling a DLL to reduce memory
else {
const watch = [
'config/webpack.config.js',
// ensure we refresh when running yarn install
'node_modules/.yarn-integrity',
];
// if utilizing the vendor DLL, we need to restart the process when dependency changes occur
if (DLL_MODE) {
watch.push('config/webpack.vendor.config.js', 'package.json', 'yarn.lock');
}
nodemon({
exec: 'webpack-dev-server --config config/webpack.config.js',
watch,
...baseConfig,
});
}
// print useful messages for nodemon events
nodemon
.on('start', () => {
console.log(`Starting webpack webserver on http://${DEV_SERVER_HOST}:${DEV_SERVER_PORT}`);
if (STATIC_MODE) {
console.log('You are starting webpack in compile-once mode');
console.log('The JavaScript assets are recompiled only if they change');
console.log('If you change them often, you might want to unset DEV_SERVER_STATIC');
}
})
.on('quit', () => {
console.log('Shutting down webpack process');
process.exit();
})
.on('restart', (files) => {
console.log('Restarting webpack process due to: ', files);
});
|