40227-vm/backend/watcher.ts
2026-06-10 18:27:19 +02:00

41 lines
1.1 KiB
TypeScript

import { exec } from 'child_process';
import chokidar from 'chokidar';
import nodemon from 'nodemon';
const nodeEnv = process.env.NODE_ENV || 'dev_stage';
const childEnv = { ...process.env, NODE_ENV: nodeEnv };
function runOnAdd(label: string, dir: string, script: string): void {
chokidar
.watch(dir, { persistent: true, ignoreInitial: true })
.on('add', (filePath) => {
console.log(`[DEBUG] New ${label} file: ${filePath}`);
exec(script, { env: childEnv }, (error, stdout, stderr) => {
console.log(stdout);
if (error) {
console.error(stderr);
}
});
});
}
runOnAdd('migration', './src/db/migrations', 'npm run db:migrate');
runOnAdd('seed', './src/db/seeders', 'npm run db:seed');
nodemon({
script: './src/index.ts',
exec: 'tsx',
ext: 'ts,js,json',
env: childEnv,
ignore: ['./src/db/migrations', './src/db/seeders'],
delay: '500',
});
nodemon.on('start', () => {
console.log('Nodemon started');
});
nodemon.on('restart', (files) => {
console.log('Nodemon restarted due to changes in:', files);
});