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
    })
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM