2020-05-24 23:13:21 +05:30
|
|
|
const nodemon = require('nodemon');
|
|
|
|
|
|
|
|
const DEV_SERVER_HOST = process.env.DEV_SERVER_HOST || 'localhost';
|
|
|
|
const DEV_SERVER_PORT = process.env.DEV_SERVER_PORT || '3808';
|
2021-04-17 20:07:23 +05:30
|
|
|
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';
|
2020-05-24 23:13:21 +05:30
|
|
|
|
|
|
|
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 {
|
2021-04-17 20:07:23 +05:30
|
|
|
const watch = ['config/webpack.config.js'];
|
2020-05-24 23:13:21 +05:30
|
|
|
|
|
|
|
// 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',
|
|
|
|
// ensure we refresh when running yarn install
|
|
|
|
'node_modules/.yarn-integrity',
|
|
|
|
'package.json',
|
|
|
|
'yarn.lock',
|
|
|
|
);
|
|
|
|
}
|
|
|
|
nodemon({
|
|
|
|
exec: 'webpack-dev-server --config config/webpack.config.js',
|
|
|
|
watch,
|
|
|
|
...baseConfig,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// print useful messages for nodemon events
|
|
|
|
nodemon
|
2021-04-17 20:07:23 +05:30
|
|
|
.on('start', () => {
|
2020-05-24 23:13:21 +05:30
|
|
|
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');
|
|
|
|
}
|
|
|
|
})
|
2021-04-17 20:07:23 +05:30
|
|
|
.on('quit', () => {
|
2020-05-24 23:13:21 +05:30
|
|
|
console.log('Shutting down webpack process');
|
|
|
|
process.exit();
|
|
|
|
})
|
2021-04-17 20:07:23 +05:30
|
|
|
.on('restart', (files) => {
|
2020-05-24 23:13:21 +05:30
|
|
|
console.log('Restarting webpack process due to: ', files);
|
|
|
|
});
|