Node監控資料夾中的檔案改變事件
阿新 • • 發佈:2018-11-23
// 需要忽略的資料夾
var ignores = '.git,doc,tool,coffee'.split(',')
// 有時候修改檔案後會連續回撥兩次,用這個時間過濾掉第二次重複的回撥
var lastUpdateTime = 0;
function watch(dir) {
fs.watch(dir, (event, filename)=> {
if (ignores.includes(filename)) return
var diff = Date.now() - lastUpdateTime
lastUpdateTime = Date.now()
if (diff < 100) return
console.log('event is: ' + event + 'filename:' + filename + ' now:' + Date.now());
// TODO: do anything ...
})
// 原生監控不能監控到子資料夾中的檔案改變事件,遍歷之
var files = fs.readdirSync(dir);
for (var i = 0; i < files.length; i++) {
if (ignores.includes(files[i])) continue
var file = dir + '/' + files[i]
var stat = fs.statSync(file)
if (stat.isDirectory() == true) {
watch(file);
}
}
}
// 開始監控當前目錄
watch('.')
console.log('start watch...');