Files
gitlab-foss/config/helpers/vite_plugin_auto_stop.mjs
2024-04-26 21:10:59 +00:00

44 lines
1.3 KiB
JavaScript

import chokidar from 'chokidar';
/**
* This vite plugin automatically stops vite if
*
* 1. a new dependency install happened, because it could affect vite itself
* 2. a new entry point is created, because right now our entry points are
* statically looked at during start up
*/
export function AutoStopPlugin() {
return {
name: 'vite-plugin-auto-stop',
configureServer(server) {
const nodeModulesWatcher = chokidar.watch(['node_modules/.yarn-integrity'], {
ignoreInitial: true,
});
const pageEntrypointsWatcher = chokidar.watch(
[
'app/assets/javascripts/pages/**/*.js',
'ee/app/assets/javascripts/pages/**/*.js',
'jh/app/assets/javascripts/pages/**/*.js',
],
{
ignoreInitial: true,
},
);
// GDK will restart Vite server for us
const stop = () => process.kill(process.pid);
pageEntrypointsWatcher.on('add', stop);
pageEntrypointsWatcher.on('unlink', stop);
nodeModulesWatcher.on('add', stop);
nodeModulesWatcher.on('change', stop);
nodeModulesWatcher.on('unlink', stop);
server.httpServer?.addListener?.('close', () => {
pageEntrypointsWatcher.close();
nodeModulesWatcher.close();
});
},
};
}