es-node-runner
Version:
Node runner that transpiles typescript or es modules using blazing fast ⚡ esbuild and restarts the process automatically on change. Suitable for node development server.
39 lines (38 loc) • 1.07 kB
JavaScript
import DEBUG from 'debug';
import {performance} from 'perf_hooks';
import {dispose} from './transpiler.js';
import {formatElapsedTime, logger} from './utils/index.js';
import watch from './watcher.js';
const debug = DEBUG('es-node-runner:main');
global.PROCESS_START_TIME = performance.now();
function main() {
try {
watch();
} catch (error) {
logger.info(
'\ntry cli option --debug with optional comma(,) separated namespace for enabling debugging.\n'
);
throw error;
}
}
process.on('exit', (code) => {
debug(`process ${process.pid} exited with code ${code}`);
const logLevel = code > 0 ? 'error' : 'log';
logger[logLevel](
`\n[es-node-runner] --> Exited with code ${code}\n` +
`Total runtime --> ${formatElapsedTime(
performance.now() - global.PROCESS_START_TIME
)}`
);
});
process.on('SIGTERM', () => {
dispose();
debug('received termination signal');
process.exit(0);
});
process.on('SIGINT', () => {
debug('received interrupt signal');
process.emit('SIGTERM');
});
main();