Node监控文件夹中的文件改变事件

版权声明:***本文为博主原创文章,未经博主允许不得转载。*** https://blog.csdn.net/rrrrrr123rrr/article/details/78526325
// 需要忽略的文件夹
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...');

猜你喜欢

转载自blog.csdn.net/rrrrrr123rrr/article/details/78526325
今日推荐