@modern-js/utils
Version:
A Progressive React Framework for modern web development.
41 lines (40 loc) • 1.13 kB
JavaScript
import path from "path";
import { chokidar } from "../compiled.mjs";
const WatchChangeType = {
ADD: 'add',
UNLINK: 'unlink',
CHANGE: 'change'
};
const watch = (watchDir, runTask, ignored = [])=>{
let ready = false;
const watcher = chokidar.watch(watchDir, {
ignored
});
watcher.on('ready', ()=>ready = true);
watcher.on('change', async (filePath)=>{
const changedFilePath = path.resolve(filePath);
await runTask({
changedFilePath,
changeType: WatchChangeType.CHANGE
});
});
watcher.on('add', async (filePath)=>{
const changedFilePath = path.resolve(filePath);
if (ready) await runTask({
changedFilePath,
changeType: WatchChangeType.ADD
});
});
watcher.on('unlink', async (filePath)=>{
const changedFilePath = path.resolve(filePath);
await runTask({
changedFilePath,
changeType: WatchChangeType.UNLINK
});
});
watcher.on('error', (err)=>{
throw err;
});
return watcher;
};
export { WatchChangeType, watch };