mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-07-25 16:03:48 +00:00
44 lines
1.3 KiB
JavaScript
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();
|
|
});
|
|
},
|
|
};
|
|
}
|