41 lines
1.1 KiB
TypeScript
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);
|
|
});
|