zoukankan      html  css  js  c++  java
  • Nodejs文件监控chokidar

     最近有个需求是扫描用例,用例是放在svn上,如果每次扫描都去遍历目录的话会有占用太多的io,所以想着用文件监控,有文件变化时只对该文件进行操作。

    Nodejs里的 chokidar 模块可以更好的对文件进行监控,不会产生多次的事件。

    直接导出成一个公用方法:

    var chokidar = require('chokidar')
    
    var watcher = null
    var ready = false
    module.exports.watch = function () {
    
      // 文件新增时
      function addFileListener(path_) {
        if (ready) {
          console.log('File', path_, 'has been added')
        }
      }
      function addDirecotryListener(path) {
        if (ready) {
          console.log('Directory', path, 'has been added')
        }
      }
    
      // 文件内容改变时
      function fileChangeListener(path_) {
          console.log('File', path_, 'has been changed')
      }
    
      // 删除文件时,需要把文件里所有的用例删掉
      function fileRemovedListener(path_) {
          console.log('File', path_, 'has been removed')
      }
    
      // 删除目录时
      function directoryRemovedListener(path) {
        log.info('Directory', path, 'has been removed')
      }
    
      if (!watcher) {
        watcher = chokidar.watch('/var/test/testproject')
      }
      watcher
        .on('add', addFileListener)
        .on('addDir', addDirecotryListener)
        .on('change', fileChangeListener)
        .on('unlink', fileRemovedListener)
        .on('unlinkDir', directoryRemovedListener)
        .on('error', function (error) {
          log.info('Error happened', error);
        })
        .on('ready', function () {
          console.info('Initial scan complete. Ready for changes.');
          ready = true
        })
    }
  • 相关阅读:
    Spring源码剖析4:懒加载的单例Bean获取过程分析
    css3动画 9步
    删除文件
    监听变量的方法
    jPaginate应用
    bg-render+bg-class+filter
    css兼容处理
    系统前端关键点
    token 入门教程
    svg笔记----------path篇
  • 原文地址:https://www.cnblogs.com/cool-fire/p/6565242.html
Copyright © 2011-2022 走看看